In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ . "$ScriptDir/../apps/builder/build.ps1" } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # DibParser (Polyglot)                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
b/net6.0/System.CommandLine.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsec.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsecCS.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/CommonFSharp.fs
#!import ../../lib/fsharp/Async.fs
#!import ../../lib/fsharp/AsyncSeq.fs
#!import ../../lib/fsharp/Runtime.fs
#!import ../../lib/fsharp/FileSystem.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module CommonFSharp =

    open Common

    /// ## getUnionCaseName

    let inline getUnionCaseName<'T> (x: 'T) =
        match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
        | case, _ -> case.Name


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module AsyncSeq =

    open Common

    /// ## subscribeEvent

    let inline subscribeEvent (event: IEvent<'H, 'A>) map =
        let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 
'A>(event.AddHandler, event.RemoveHandler)
        System.Reactive.Linq.Observable.Select (observable, fun event -> map 
event.EventArgs)
        |> FSharp.Control.AsyncSeq.ofObservableBuffered

    let subscribeToken (token : System.Threading.CancellationToken) =
        let tcs = new System.Threading.Tasks.TaskCompletionSource ()
        System.Action tcs.SetResult |> token.Register |> ignore
        let start = System.DateTime.Now.Ticks
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun (...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Runtime =

    open Common

    /// ## isWindows

    let isWindows =
        fun () ->
            System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
                System.Runtime.InteropServices.OSPlatform.Windows
        |> memoize

    /// ## getExecutableSuffix

    let inline getExecutableSuffix () =
        if isWindows ()
        then ".exe"
        else ""

    /// ## splitCommand

    type private CommandParseStep =
        | Start
        | Path of quoted: bool
        | Arguments

    let splitCommand (command: string) =
        let rec loop (path, args) chars step =
            match chars, step with
            | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module FileSystem =

    open Common

    /// ## Operators

    module Operators =
        let inline (</>) a b =
            System.IO.Path.Combine (a, b)

    open Operators

    /// ## createTempDirectoryName

    let inline createTempDirectoryName () =
        let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name

        System.IO.Path.GetTempPath ()
        </> $"!{root}"
        </> string (newGuidFromDateTime System.DateTime.Now)

    /// ## createTempDirectory

    let inline createTempDirectory () =
        let tempFolder = createTempDirectoryName ()
        let result = System.IO.Directory.CreateDirectory tempFolder

        if not result.Exists then
            let ge...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open FParsec

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## escapeCell (test)                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline escapeCell input =
    input
    |> String.split [[| '\n' |]]
    |> Array.map (function
        | line when line |> String.startsWith "\\#!" || line |> 
String.startsWith "\\#r" ->
            System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
        | line -> line
    )
    |> String.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

$"a{nl}\\#!magic{nl}b{nl}"
|> escapeCell
|> _equal (
    $"a{nl}#!magic{nl}b{nl}"
)

╭─[ 35.94ms - stdout ]─────────────────────────────────────────────────────────╮
│ a                                                                            │
│ #!magic                                                                      │
│ b                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## magicMarker                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let magicMarker : Parser<string, unit> = pstring "#!"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic"
|> run magicMarker
|> _equal (
    Success ("#!", (), Position ("", 2, 1, 3))
)

╭─[ 25.99ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: #!                                                              │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 2                                                             │
│         Line: 1                                                              │
│         Column: 3                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"##!magic"
|> run magicMarker
|> _equal (
    Failure (
        $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

╭─[ 35.38ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure                                                                      │
│       Item1: Error in Ln: 1 Col: 1                                           │
│ ##!magic                                                                     │
│ ^                                                                            │
│ Expecting: '#!'                                                              │
│                                                                              │
│       Item2: ParserError                                                     │
│         Position: Position                                                   │
│           Index: 0                                                           │
│           Line: 1                                                            │
│           Column: 1                                                          │
│           StreamName:                                                        │
│         UserState: <null>                                                    │
│         Messages: ErrorMessageList                                           │
│           Head: ExpectedString                                               │
│             String: #!                                                       │
│             Type: ExpectedString                                             │
│           Tail: <null>                                                       │
│       Item3: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## magicCommand                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let magicCommand =
    magicMarker
    >>. manyTill anyChar newline
    |>> (System.String.Concat >> String.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic

a"
|> run magicCommand
|> _equal (
    Success ("magic", (), Position ("", 8, 2, 1))
)

╭─[ 15.35ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: magic                                                           │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 8                                                             │
│         Line: 2                                                              │
│         Column: 1                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

" #!magic

a"
|> run magicCommand
|> _equal (
    Failure (
        $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

╭─[ 16.76ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure                                                                      │
│       Item1: Error in Ln: 1 Col: 1                                           │
│  #!magic                                                                     │
│ ^                                                                            │
│ Expecting: '#!'                                                              │
│                                                                              │
│       Item2: ParserError                                                     │
│         Position: Position                                                   │
│           Index: 0                                                           │
│           Line: 1                                                            │
│           Column: 1                                                          │
│           StreamName:                                                        │
│         UserState: <null>                                                    │
│         Messages: ErrorMessageList                                           │
│           Head: ExpectedString                                               │
│             String: #!                                                       │
│             Type: ExpectedString                                             │
│           Tail: <null>                                                       │
│       Item3: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## content                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let content =
    (newline >>. magicMarker) <|> (eof >>. preturn "")
    |> attempt
    |> lookAhead
    |> manyTill anyChar
    |>> (System.String.Concat >> String.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run content
|> _equal (
    Success ("#!magic


a", (), Position ("", 14, 7, 1))
)

╭─[ 15.56ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: #!magic                                                         │
│                                                                              │
│                                                                              │
│ a                                                                            │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 14                                                            │
│         Line: 7                                                              │
│         Column: 1                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Block                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Block =
    {
        magic : string
        content : string
    }

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## block                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let block =
    pipe2
        magicCommand
        content
        (fun magic content ->
            {
                magic = magic
                content = content
            })

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run block
|> _equal (
    Success (
        { magic = "magic"; content = "a" },
        (),
        Position ("", 14, 7, 1)
    )
)

╭─[ 18.49ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: Block                                                           │
│         magic: magic                                                         │
│         content: a                                                           │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 14                                                            │
│         Line: 7                                                              │
│         Column: 1                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## blocks                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let blocks =
    skipMany newline
    >>. sepEndBy block (skipMany1 newline)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test


"#!magic1

a

\#!magic2

b

"
|> escapeCell
|> run blocks
|> _equal (
    Success (
        [[
            { magic = "magic1"; content = "a" }
            { magic = "magic2"; content = "b" }
        ]],
        (),
        Position ("", 26, 9, 1)
    )
)

╭─[ 25.37ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: FSharpList<Block>                                               │
│         - magic: magic1                                                      │
│           content: a                                                         │
│         - magic: magic2                                                      │
│           content: b                                                         │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 26                                                            │
│         Line: 9                                                              │
│         Column: 1                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Output                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Output =
    | Fs
    | Md
    | Spi
    | Spir

let inline kernelOutputs magic =
    match magic with
    | "fsharp" -> [[ Fs ]]
    | "markdown" -> [[ Md ]]
    | "spiral" -> [[ Spi; Spir ]]
    | _ -> [[]]

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## formatBlock                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlock output (block : Block) =
    match output, block with
    | output, { magic = "markdown"; content = content } ->
        let markdownComment =
            match output with
            | Spi | Spir -> "// // "
            | Fs -> "/// "
            | _ -> ""
        content
        |> String.split [[| '\n' |]]
        |> Array.map (String.trimEnd [[||]])
        |> Array.filter (String.endsWith " (test)" >> not)
        |> Array.map (function
            | "" -> markdownComment |> String.trim
            | line -> System.Text.RegularExpressions.Regex.Replace (line, 
"^\\s*", $"$&{markdownComment}")
        )
        |> String.concat "\n"
    | Fs, { magic = "fsharp"; content = content } ->
        let trimmedContent = content |> String.trim
        if trimmedContent |> String.startsWith "//// test" || trimmedContent |> 
String.startsWith "//// ignore"
        then ""
        else
            content
            |> String.split [[| '\n' |]]
            |> Array.filter (String.trimStart [[||]] >> String.startsWith "#r" 
>> not)
            |> String.concat "\n"
    | (Spi | Spir), { magic = "spiral"; content = content } ->
        let trimmedContent = content |> String.trim
        if trimmedContent |> String.startsWith "// // test" || trimmedContent |>
String.startsWith "// // ignore"
        then ""
        else content
    | _ -> ""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

    b

c


\#!markdown


c


\#!fsharp


let a = 1"
|> escapeCell
|> run block
|> function
    | Success (block, _, _) -> formatBlock Fs block
    | Failure (msg, _, _) -> failwith msg
|> _equal "/// a
///
    /// b
///
/// c"

╭─[ 32.82ms - stdout ]─────────────────────────────────────────────────────────╮
│ /// a                                                                        │
│ ///                                                                          │
│     /// b                                                                    │
│ ///                                                                          │
│ /// c                                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## formatBlocks                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlocks output blocks =
    blocks
    |> List.map (formatBlock output)
    |> List.filter ((<>) "")
    |> String.concat "\n\n"
    |> fun s -> s + "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

b


\#!markdown


c


\#!fsharp


let a = 1

\#!markdown

d (test)

\#!fsharp

//// test

let a = 2

\#!markdown

e

\#!fsharp

let a = 3"
|> escapeCell
|> run blocks
|> function
    | Success (blocks, _, _) -> formatBlocks Fs blocks
    | Failure (msg, _, _) -> failwith msg
|> _equal "/// a
///
/// b

/// c

let a = 1

/// e

let a = 3
"

╭─[ 34.90ms - stdout ]─────────────────────────────────────────────────────────╮
│ /// a                                                                        │
│ ///                                                                          │
│ /// b                                                                        │
│                                                                              │
│ /// c                                                                        │
│                                                                              │
│ let a = 1                                                                    │
│                                                                              │
│ /// e                                                                        │
│                                                                              │
│ let a = 3                                                                    │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parse                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parse output input =
    match run blocks input with
    | Success (blocks, _, _) ->
        let blocks =
            blocks
            |> List.filter (fun block ->
                block.magic |> kernelOutputs |> List.contains output || 
block.magic = "markdown"
            )

        match blocks with
        | { magic = "markdown"; content = content } :: _
            when output = Fs
            && content |> String.startsWith "# "
            && content |> String.endsWith ")"
            ->
            let inline indentBlock (block : Block) =
                { block with
                    content =
                        block.content
                        |> String.split [[| '\n' |]]
                        |> Array.fold
                            (fun (lines, isMultiline) line ->
                                let trimmedLine = line |> String.trim
                                if trimmedLine = ""
                                then "" :: lines, isMultiline
                                else
                                    let inline singleQuoteLine () =
                                        trimmedLine |> Seq.sumBy ((=) '"' >> 
System.Convert.ToInt32) = 1
                                        && trimmedLine |> String.contains 
@"'""'" |> not
                                        && trimmedLine |> String.endsWith "{" |>
not
                                        && trimmedLine |> String.endsWith "{|" 
|> not
                                        && trimmedLine |> String.startsWith "}" 
|> not
                                        && trimmedLine |> String.startsWith "|}"
|> not

                                    match isMultiline, trimmedLine |> 
String.splitString [[| $"{q}{q}{q}" |]] with
                                    | false, [[| _; _ |]] ->
                                        $"    {line}" :: lines, true

                                    | true, [[| _; _ |]] ->
                                        line :: lines, false

                                    | false, _ when singleQuoteLine () ->
                                        $"    {line}" :: lines, true

                                    | false, _ when line |> String.startsWith 
"#" && block.magic = "fsharp" ->
                                        line :: lines, false

                                    | false, _ ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () && line |>
String.startsWith "    " ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () ->
                                        line :: lines, false

                                    | true, _ ->
                                        line :: lines, true
                            )
                            ([[]], false)
                        |> fst
                        |> List.rev
                        |> String.concat "\n"
                }

            let moduleName, namespaceName =
                System.Text.RegularExpressions.Regex.Match (content, @"# (.*) 
\((.*)\)$")
                |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value

            let moduleBlock =
                {
                    magic = "fsharp"
                    content =
                        $"#if !INTERACTIVE
namespace {namespaceName}
#endif

module {moduleName} ="
                }

            blocks
            |> List.indexed
            |> List.fold
                (fun blocks (index, block) ->
                    match index with
                    | 0 -> blocks
                    | 1 -> indentBlock block :: moduleBlock :: blocks
                    | _ -> indentBlock block :: blocks
                )
                [[]]
            |> List.rev
        | _ -> blocks
        |> Result.Ok
    | Failure (errorMsg, _, _) -> Result.Error errorMsg

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example1 =
    $"""#!meta

{{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
"fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}

\#!markdown

# TestModule (TestNamespace)

\#!fsharp

\#!import file.dib

\#!fsharp

\#r "nuget:Expecto"

\#!markdown

## ParserLibrary

\#!fsharp

open System

\#!markdown

## x (test)

\#!fsharp

//// ignore

let x = 1

\#!spiral

// // test

inl x = 0i32

\#!spiral

inl x = 0i32

\#!markdown

### TextInput

\#!fsharp

let str1 = "abc
def"

let str2 =
    "abc\
def"

let str3 =
    $"1{{
        1
    }}1"

let str4 =
    $"1{{({{|
        a = 1
    |}}).a}}1"

let str5 =
    "abc \
        def"

let x =
    match '"' with
    | '"' -> true
    | _ -> false

let long1 = {q}{q}{q}a{q}{q}{q}

let long2 =
    {q}{q}{q}
a
{q}{q}{q}

\#!fsharp

type Position =
    {{
#if INTERACTIVE
        line : string
#else
        line : int
#endif
        column : int
    }}"""
    |> escapeCell

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Fs
|> Result.toOption
|> Option.get
|> (formatBlocks Fs)
|> _equal $"""#if !INTERACTIVE
namespace TestNamespace
#endif

module TestModule =

    /// ## ParserLibrary

    open System

    /// ### TextInput

    let str1 = "abc
def"

    let str2 =
        "abc\
def"

    let str3 =
        $"1{{
            1
        }}1"

    let str4 =
        $"1{{({{|
            a = 1
        |}}).a}}1"

    let str5 =
        "abc \
            def"

    let x =
        match '"' with
        | '"' -> true
        | _ -> false

    let long1 = {q}{q}{q}a{q}{q}{q}

    let long2 =
        {q}{q}{q}
a
{q}{q}{q}

    type Position =
        {{
#if INTERACTIVE
            line : string
#else
            line : int
#endif
            column : int
        }}
"""

╭─[ 97.57ms - stdout ]─────────────────────────────────────────────────────────╮
│ #if !INTERACTIVE                                                             │
│ namespace TestNamespace                                                      │
│ #endif                                                                       │
│                                                                              │
│ module TestModule =                                                          │
│                                                                              │
│     /// ## ParserLibrary                                                     │
│                                                                              │
│     open System                                                              │
│                                                                              │
│     /// ### TextInput                                                        │
│                                                                              │
│     let str1 = "abc                                                          │
│ def"                                                                         │
│                                                                              │
│     let str2 =                                                               │
│         "abc\                                                                │
│ def"                                                                         │
│                                                                              │
│     let str3 =                                                               │
│         $"1{                                                                 │
│             1                                                                │
│         }1"                                                                  │
│                                                                              │
│     let str4 =                                                               │
│         $"1{({|                                                              │
│             a = 1                                                            │
│         |}).a}1"                                                             │
│                                                                              │
│     let str5 =                                                               │
│         "abc \                                                               │
│             def"                                                             │
│                                                                              │
│     let x =                                                                  │
│         match '"' with                                                       │
│         | '"' -> true                                                        │
│         | _ -> false                                                         │
│                                                                              │
│     let long1 = """a"""                                                      │
│                                                                              │
│     let long2 =                                                              │
│         """                                                                  │
│ a                                                                            │
│ """                                                                          │
│                                                                              │
│     type Position =                                                          │
│         {                                                                    │
│ #if INTERACTIVE                                                              │
│             line : string                                                    │
│ #else                                                                        │
│             line : int                                                       │
│ #endif                                                                       │
│             column : int                                                     │
│         }                                                                    │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Md
|> Result.toOption
|> Option.get
|> (formatBlocks Md)
|> _equal "# TestModule (TestNamespace)

## ParserLibrary

### TextInput
"

╭─[ 87.34ms - stdout ]─────────────────────────────────────────────────────────╮
│ # TestModule (TestNamespace)                                                 │
│                                                                              │
│ ## ParserLibrary                                                             │
│                                                                              │
│ ### TextInput                                                                │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spi
|> Result.toOption
|> Option.get
|> (formatBlocks Spi)
|> _equal "// // # TestModule (TestNamespace)

// // ## ParserLibrary

inl x = 0i32

// // ### TextInput
"

╭─[ 86.51ms - stdout ]─────────────────────────────────────────────────────────╮
│ // // # TestModule (TestNamespace)                                           │
│                                                                              │
│ // // ## ParserLibrary                                                       │
│                                                                              │
│ inl x = 0i32                                                                 │
│                                                                              │
│ // // ### TextInput                                                          │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parseDibCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseDibCode output file = async {
    let getLocals () = $"output: {output} / file: {file} / {getLocals ()}"
    trace Debug (fun () -> "parseDibCode") getLocals
    let! input = file |> FileSystem.readAllTextAsync
    match parse output input with
    | Result.Ok blocks -> return blocks |> formatBlocks output
    | Result.Error msg -> return failwith msg
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## writeDibCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline writeDibCode output path = async {
    let getLocals () = $"output: {output} / path: {path} / {getLocals ()}"
    trace Debug (fun () -> "writeDibCode") getLocals
    let! result = parseDibCode output path
    let outputPath = path |> String.replace ".dib" $".{output |> string |> 
String.toLower}"
    do! result |> FileSystem.writeAllTextAsync outputPath
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Arguments                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
        File of file : string * Output

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | File _ -> nameof File

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

╭─[ 80.83ms - return value ]───────────────────────────────────────────────────╮
│ USAGE: dotnet [--help] <file> <fs|md|spi|spir>                               │
│                                                                              │
│ FILE:                                                                        │
│                                                                              │
│     <file> <fs|md|spi|spir>                                                  │
│                           File                                               │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --help                display this list of options.                      │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## main                                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let files =
        argsMap.[[nameof Arguments.File]]
        |> List.map (function
            | Arguments.File (path, output) -> path, output
        )

    files
    |> List.map (fun (path, output) -> path |> writeDibCode output)
    |> Async.Parallel
    |> Async.Ignore
    |> Async.runWithTimeout 30000
    |> function
        | Some () -> 0
        | None -> 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> Runtime.splitArgs
    |> Seq.toArray

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

╭─[ 153.66ms - return value ]──────────────────────────────────────────────────╮
│ <div class="dni-plaintext"><pre>0</pre></div><style>                         │
│ .dni-code-hint {                                                             │
│     font-style: italic;                                                      │
│     overflow: hidden;                                                        │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview {                                                              │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview td {                                                           │
│     vertical-align: top;                                                     │
│     text-align: start;                                                       │
│ }                                                                            │
│ details.dni-treeview {                                                       │
│     padding-left: 1em;                                                       │
│ }                                                                            │
│ table td {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ table tr {                                                                   │
│     vertical-align: top;                                                     │
│     margin: 0em 0px;                                                         │
│ }                                                                            │
│ table tr td pre                                                              │
│ {                                                                            │
│     vertical-align: top !important;                                          │
│     margin: 0em 0px !important;                                              │
│ }                                                                            │
│ table th {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ </style>                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 155.18ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Builder.dib            │
│ 00:00:00 #2 [Debug] parseDibCode / output: Fs / file: Builder.dib            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Builder (Polyglot)                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
b/net6.0/System.CommandLine.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/CommonFSharp.fs
#!import ../../lib/fsharp/Async.fs
#!import ../../lib/fsharp/AsyncSeq.fs
#!import ../../lib/fsharp/Networking.fs
#!import ../../lib/fsharp/Runtime.fs
#!import ../../lib/fsharp/FileSystem.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module CommonFSharp =

    open Common

    /// ## getUnionCaseName

    let inline getUnionCaseName<'T> (x: 'T) =
        match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
        | case, _ -> case.Name


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module AsyncSeq =

    open Common

    /// ## subscribeEvent

    let inline subscribeEvent (event: IEvent<'H, 'A>) map =
        let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 
'A>(event.AddHandler, event.RemoveHandler)
        System.Reactive.Linq.Observable.Select (observable, fun event -> map 
event.EventArgs)
        |> FSharp.Control.AsyncSeq.ofObservableBuffered

    let subscribeToken (token : System.Threading.CancellationToken) =
        let tcs = new System.Threading.Tasks.TaskCompletionSource ()
        System.Action tcs.SetResult |> token.Register |> ignore
        let start = System.DateTime.Now.Ticks
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun (...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Networking =

    open Common

    /// ## testPortOpen

    let inline testPortOpen port = async {
        let! ct = Async.CancellationToken
        use client = new System.Net.Sockets.TcpClient ()
        try
            do! client.ConnectAsync ("127.0.0.1", port, ct) |> 
Async.awaitValueTaskUnit
            return true
        with ex ->
            trace Verbose (fun () -> $"testPortOpen / ex: {ex |> 
printException}") getLocals
            return false
    }

    let inline testPortOpenTimeout timeout port = async {
        let! result =
            testPortOpen port
            |> Async.runWithTimeoutAsync timeout
        return
            match result with
            | None -> false
 ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Runtime =

    open Common

    /// ## isWindows

    let isWindows =
        fun () ->
            System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
                System.Runtime.InteropServices.OSPlatform.Windows
        |> memoize

    /// ## getExecutableSuffix

    let inline getExecutableSuffix () =
        if isWindows ()
        then ".exe"
        else ""

    /// ## splitCommand

    type private CommandParseStep =
        | Start
        | Path of quoted: bool
        | Arguments

    let splitCommand (command: string) =
        let rec loop (path, args) chars step =
            match chars, step with
            | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module FileSystem =

    open Common

    /// ## Operators

    module Operators =
        let inline (</>) a b =
            System.IO.Path.Combine (a, b)

    open Operators

    /// ## createTempDirectoryName

    let inline createTempDirectoryName () =
        let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name

        System.IO.Path.GetTempPath ()
        </> $"!{root}"
        </> string (newGuidFromDateTime System.DateTime.Now)

    /// ## createTempDirectory

    let inline createTempDirectory () =
        let tempFolder = createTempDirectoryName ()
        let result = System.IO.Directory.CreateDirectory tempFolder

        if not result.Exists then
            let ge...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open FileSystem.Operators

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## buildProject                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline buildProject runtime outputDir path = async {
    let fullPath = path |> System.IO.Path.GetFullPath
    let fileDir = fullPath |> System.IO.Path.GetDirectoryName
    let extension = fullPath |> System.IO.Path.GetExtension

    let getLocals () = $"fullPath: {fullPath} / {getLocals ()}"
    trace Debug (fun () -> "buildProject") getLocals

    match extension with
    | ".fsproj" -> ()
    | _ -> failwith "Invalid project file"

    let runtimes =
        runtime
        |> Option.map List.singleton
        |> Option.defaultValue [[ "linux-x64"; "win-x64" ]]

    let outputDir = outputDir |> Option.defaultValue "dist"

    return!
        runtimes
        |> List.map (fun runtime -> async {
            let! exitCode, _result =
                Runtime.executeWithOptionsAsync
                    {
                        Command = $@"dotnet publish ""{path}"" --configuration 
Release --output ""{outputDir}"" --runtime {runtime}"
                        CancellationToken = None
                        OnLine = None
                        WorkingDirectory = Some fileDir
                    }

            return exitCode
        })
        |> Async.Sequential
        |> Async.map Array.sum
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## persistCodeProject                                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline persistCodeProject packages modules name code = async {
    let getLocals () = $"packages: {packages} / modules: {modules} / name: 
{name} / code.Length: {code |> String.length} / {getLocals ()}"
    trace Debug (fun () -> "persistCodeProject") getLocals

    let repositoryRoot = FileSystem.getSourceDirectory () |> 
FileSystem.findParent ".paket" false

    let targetDir = repositoryRoot </> "target/polyglot/builder" </> name
    System.IO.Directory.CreateDirectory targetDir |> ignore

    let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath
    do! code |> FileSystem.writeAllTextExists filePath

    let modulesCode =
        modules
        |> List.map (fun path -> $"""<Compile Include="{repositoryRoot </> 
path}" />""")
        |> String.concat "\n        "

    let fsprojPath = targetDir </> $"{name}.fsproj"
    let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <LangVersion>preview</LangVersion>
        <RollForward>Major</RollForward>
        <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
        <PublishAot>false</PublishAot>
        <PublishTrimmed>false</PublishTrimmed>
        <PublishSingleFile>true</PublishSingleFile>
        <SelfContained>true</SelfContained>
        <Version>0.0.1-alpha.1</Version>
        <OutputType>Exe</OutputType>
    </PropertyGroup>

    <ItemGroup>
        {modulesCode}
        <Compile Include="{filePath}" />
    </ItemGroup>

    <Import Project="{repositoryRoot}/.paket/Paket.Restore.targets" />
</Project>
"""
    do! fsprojCode |> FileSystem.writeAllTextExists fsprojPath

    let paketReferencesPath = targetDir </> "paket.references"
    let paketReferencesCode =
        "FSharp.Core" :: packages
        |> String.concat "\n"
    do! paketReferencesCode |> FileSystem.writeAllTextExists paketReferencesPath

    return fsprojPath
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## buildCode                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline buildCode runtime packages modules outputDir name code = async {
    let! fsprojPath = code |> persistCodeProject packages modules name
    return! fsprojPath |> buildProject runtime outputDir
}

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"1 + 1"
|> buildCode None [[]] [[]] None "test1"
|> Async.runWithTimeout 60000
|> _equal (Some 0)

╭─[ 11.79s - stdout ]──────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Debug] persistCodeProject / packages: [] / modules: [] / name:  │
│ test1 / code.Length: 5                                                       │
│ 00:00:00 #2 [Debug] buildProject / fullPath:                                 │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj                                                                           │
│ 00:00:00 #3 [Debug] executeAsync / options: { Command =                      │
│    "dotnet publish                                                           │
│ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fsp │
│ roj" --configuration Release --output "dist" --runtime linux-x64"            │
│   WorkingDirectory =                                                         │
│    Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test1"  │
│   CancellationToken = None                                                   │
│   OnLine = None }                                                            │
│ 00:00:00 #4 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f   │
│ for .NET                                                                     │
│ 00:00:00 #5 [Verbose] >   Determining projects to restore...                 │
│ 00:00:01 #6 [Verbose] >   Paket version                                      │
│ 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483                      │
│ 00:00:01 #7 [Verbose] >   The last full restore is still up to date. Nothing │
│ left to do.                                                                  │
│ 00:00:01 #8 [Verbose] >   Total time taken: 0 milliseconds                   │
│ 00:00:01 #9 [Verbose] >   Paket version                                      │
│ 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483                      │
│ 00:00:01 #10 [Verbose] >   Restoring                                         │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj                                                                           │
│ 00:00:02 #11 [Verbose] >   Starting restore process.                         │
│ 00:00:02 #12 [Verbose] >   Total time taken: 0 milliseconds                  │
│ 00:00:04 #13 [Verbose] >   Restored                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj (in 2.24 sec).                                                            │
│ 00:00:04 #14 [Verbose] >                                                     │
│ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
│ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
│ NETSDK1057: You are using a preview version of .NET. See:                    │
│ https://aka.ms/dotnet-support-policy [                                       │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj]                                                                          │
│ 00:00:05 #15 [Verbose] >                                                     │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fs(1 │
│ ,1): warning FS0020: The result of this expression has type 'int' and is     │
│ implicitly ignored. Consider using 'ignore' to discard this value            │
│ explicitly, e.g. 'expr |> ignore', or 'let' to bind the result to a name,    │
│ e.g. 'let result = expr'. [                                                  │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj]                                                                          │
│ 00:00:05 #16 [Verbose] >                                                     │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fs(1 │
│ ,6): warning FS0988: Main module of program is empty: nothing will happen    │
│ when it is run [                                                             │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj]                                                                          │
│ 00:00:06 #17 [Verbose] >   test1 ->                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/bin/Releas │
│ e/net8.0/linux-x64/test1.dll                                                 │
│ 00:00:06 #18 [Verbose] >   test1 ->                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/dist       │
│ 00:00:06 #19 [Debug] executeAsync / exitCode: 0 / output.Length: 1760        │
│ 00:00:06 #20 [Debug] executeAsync / options: { Command =                     │
│    "dotnet publish                                                           │
│ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fsp │
│ roj" --configuration Release --output "dist" --runtime win-x64"              │
│   WorkingDirectory =                                                         │
│    Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test1"  │
│   CancellationToken = None                                                   │
│   OnLine = None }                                                            │
│ 00:00:07 #21 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f  │
│ for .NET                                                                     │
│ 00:00:07 #22 [Verbose] >   Determining projects to restore...                │
│ 00:00:09 #23 [Verbose] >   Restored                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj (in 1.56 sec).                                                            │
│ 00:00:09 #24 [Verbose] >                                                     │
│ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
│ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
│ NETSDK1057: You are using a preview version of .NET. See:                    │
│ https://aka.ms/dotnet-support-policy [                                       │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj]                                                                          │
│ 00:00:10 #25 [Verbose] >                                                     │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fs(1 │
│ ,1): warning FS0020: The result of this expression has type 'int' and is     │
│ implicitly ignored. Consider using 'ignore' to discard this value            │
│ explicitly, e.g. 'expr |> ignore', or 'let' to bind the result to a name,    │
│ e.g. 'let result = expr'. [                                                  │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj]                                                                          │
│ 00:00:10 #26 [Verbose] >                                                     │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fs(1 │
│ ,6): warning FS0988: Main module of program is empty: nothing will happen    │
│ when it is run [                                                             │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/test1.fspr │
│ oj]                                                                          │
│ 00:00:10 #27 [Verbose] >   test1 ->                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/bin/Releas │
│ e/net8.0/win-x64/test1.dll                                                   │
│ 00:00:11 #28 [Verbose] >   test1 ->                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test1/dist       │
│ 00:00:11 #29 [Debug] executeAsync / exitCode: 0 / output.Length: 1360        │
│ FSharpOption<Int32>                                                          │
│       Value: 0                                                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"1 + a"
|> buildCode None [[]] [[]] None "test2"
|> Async.runWithTimeout 60000
|> _equal (Some 2)

╭─[ 6.15s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:11 #30 [Debug] persistCodeProject / packages: [] / modules: [] / name: │
│ test2 / code.Length: 5                                                       │
│ 00:00:11 #31 [Debug] buildProject / fullPath:                                │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │
│ oj                                                                           │
│ 00:00:11 #32 [Debug] executeAsync / options: { Command =                     │
│    "dotnet publish                                                           │
│ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fsp │
│ roj" --configuration Release --output "dist" --runtime linux-x64"            │
│   WorkingDirectory =                                                         │
│    Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test2"  │
│   CancellationToken = None                                                   │
│   OnLine = None }                                                            │
│ 00:00:11 #33 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f  │
│ for .NET                                                                     │
│ 00:00:12 #34 [Verbose] >   Determining projects to restore...                │
│ 00:00:12 #35 [Verbose] >   Paket version                                     │
│ 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483                      │
│ 00:00:12 #36 [Verbose] >   The last full restore is still up to date.        │
│ Nothing left to do.                                                          │
│ 00:00:12 #37 [Verbose] >   Total time taken: 0 milliseconds                  │
│ 00:00:13 #38 [Verbose] >   Paket version                                     │
│ 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483                      │
│ 00:00:13 #39 [Verbose] >   Restoring                                         │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │
│ oj                                                                           │
│ 00:00:13 #40 [Verbose] >   Starting restore process.                         │
│ 00:00:13 #41 [Verbose] >   Total time taken: 0 milliseconds                  │
│ 00:00:14 #42 [Verbose] >   Restored                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │
│ oj (in 263 ms).                                                              │
│ 00:00:14 #43 [Verbose] >                                                     │
│ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
│ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
│ NETSDK1057: You are using a preview version of .NET. See:                    │
│ https://aka.ms/dotnet-support-policy [                                       │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │
│ oj]                                                                          │
│ 00:00:15 #44 [Verbose] >                                                     │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fs(1 │
│ ,5): error FS0039: The value or constructor 'a' is not defined. [            │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │
│ oj]                                                                          │
│ 00:00:15 #45 [Debug] executeAsync / exitCode: 1 / output.Length: 1138        │
│ 00:00:15 #46 [Debug] executeAsync / options: { Command =                     │
│    "dotnet publish                                                           │
│ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fsp │
│ roj" --configuration Release --output "dist" --runtime win-x64"              │
│   WorkingDirectory =                                                         │
│    Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/test2"  │
│   CancellationToken = None                                                   │
│   OnLine = None }                                                            │
│ 00:00:15 #47 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f  │
│ for .NET                                                                     │
│ 00:00:15 #48 [Verbose] >   Determining projects to restore...                │
│ 00:00:16 #49 [Verbose] >   Restored                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │
│ oj (in 257 ms).                                                              │
│ 00:00:16 #50 [Verbose] >                                                     │
│ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
│ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
│ NETSDK1057: You are using a preview version of .NET. See:                    │
│ https://aka.ms/dotnet-support-policy [                                       │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │
│ oj]                                                                          │
│ 00:00:17 #51 [Verbose] >                                                     │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fs(1 │
│ ,5): error FS0039: The value or constructor 'a' is not defined. [            │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/test2/test2.fspr │
│ oj]                                                                          │
│ 00:00:17 #52 [Debug] executeAsync / exitCode: 1 / output.Length: 740         │
│ FSharpOption<Int32>                                                          │
│       Value: 2                                                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## readFile                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline readFile path = async {
    let! code = path |> FileSystem.readAllTextAsync

    let code = System.Text.RegularExpressions.Regex.Replace (
        code,
        @"( *)(let\s+main\s+.*?\s*=)",
        fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + 
m.Groups.[[1]].Value + m.Groups.[[2]].Value
    )

    let codeTrim = code |> String.trimEnd [[||]]
    return
        if codeTrim |> String.endsWith "\n()"
        then codeTrim |> String.substring 0 ((codeTrim |> String.length) - 2)
        else code
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## buildFile                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline buildFile runtime packages modules path = async {
    let fullPath = path |> System.IO.Path.GetFullPath
    let dir = fullPath |> System.IO.Path.GetDirectoryName
    let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
    let! code = fullPath |> readFile
    return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) 
name
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## persistFile                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline persistFile packages modules path = async {
    let fullPath = path |> System.IO.Path.GetFullPath
    let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
    let! code = fullPath |> readFile
    return! code |> persistCodeProject packages modules name
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Arguments                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] 
Path of path : string
    | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list
    | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list
    | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string
    | [[<Argu.ArguAttributes.Unique>]] Persist_Only

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | Path _ -> nameof Path
            | Packages _ -> nameof Packages
            | Modules _ -> nameof Modules
            | Runtime _ -> nameof Runtime
            | Persist_Only -> nameof Persist_Only

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

╭─[ 90.12ms - return value ]───────────────────────────────────────────────────╮
│ USAGE: dotnet [--help] [--packages [<packages>...]] [--modules [             │
│ <modules>...]]                                                               │
│               [--runtime <runtime>] [--persist-only] <path>                  │
│                                                                              │
│ PATH:                                                                        │
│                                                                              │
│     <path>                Path                                               │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --packages [<packages>...]                                               │
│                           Packages                                           │
│     --modules [<modules>...]                                                 │
│                           Modules                                            │
│     --runtime <runtime>   Runtime                                            │
│     --persist-only        Persist_Only                                       │
│     --help                display this list of options.                      │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## main                                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let path =
        match argsMap.[[nameof Arguments.Path]] with
        | [[ Arguments.Path path ]] -> Some path
        | _ -> None
        |> Option.get

    let packages =
        match argsMap |> Map.tryFind (nameof Arguments.Packages) with
        | Some [[ Arguments.Packages packages ]] -> packages
        | _ -> [[]]

    let modules =
        match argsMap |> Map.tryFind (nameof Arguments.Modules) with
        | Some [[ Arguments.Modules modules ]] -> modules
        | _ -> [[]]

    let runtime =
        match argsMap |> Map.tryFind (nameof Arguments.Runtime) with
        | Some [[ Arguments.Runtime runtime ]] -> Some runtime
        | _ -> None

    let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only)

    if persistOnly
    then path |> persistFile packages modules |> Async.map (fun _ -> 0)
    else path |> buildFile runtime packages modules
    |> Async.runWithTimeout 60000
    |> function
        | Some exitCode -> exitCode
        | None -> 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> Runtime.splitArgs
    |> Seq.toArray

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

╭─[ 13.53s - return value ]────────────────────────────────────────────────────╮
│ <div class="dni-plaintext"><pre>0</pre></div><style>                         │
│ .dni-code-hint {                                                             │
│     font-style: italic;                                                      │
│     overflow: hidden;                                                        │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview {                                                              │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview td {                                                           │
│     vertical-align: top;                                                     │
│     text-align: start;                                                       │
│ }                                                                            │
│ details.dni-treeview {                                                       │
│     padding-left: 1em;                                                       │
│ }                                                                            │
│ table td {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ table tr {                                                                   │
│     vertical-align: top;                                                     │
│     margin: 0em 0px;                                                         │
│ }                                                                            │
│ table tr td pre                                                              │
│ {                                                                            │
│     vertical-align: top !important;                                          │
│     margin: 0em 0px !important;                                              │
│ }                                                                            │
│ table th {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ </style>                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 13.53s - stdout ]──────────────────────────────────────────────────────────╮
│ 00:00:18 #53 [Debug] persistCodeProject / packages: [Argu;                   │
│ FSharp.Control.AsyncSeq; System.CommandLine; ... ] / modules: [              │
│ lib/fsharp/Common.fs; lib/fsharp/CommonFSharp.fs; lib/fsharp/Async.fs; ... ] │
│ / name: Builder / code.Length: 7079                                          │
│ 00:00:18 #54 [Debug] buildProject / fullPath:                                │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │
│ fsproj                                                                       │
│ 00:00:18 #55 [Debug] executeAsync / options: { Command =                     │
│    "dotnet publish                                                           │
│ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder │
│ .fsproj" --configuration Release --output                                    │
│ "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64" │
│   WorkingDirectory =                                                         │
│    Some                                                                      │
│ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder"        │
│   CancellationToken = None                                                   │
│   OnLine = None }                                                            │
│ 00:00:18 #56 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f  │
│ for .NET                                                                     │
│ 00:00:19 #57 [Verbose] >   Determining projects to restore...                │
│ 00:00:19 #58 [Verbose] >   Paket version                                     │
│ 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483                      │
│ 00:00:19 #59 [Verbose] >   The last full restore is still up to date.        │
│ Nothing left to do.                                                          │
│ 00:00:19 #60 [Verbose] >   Total time taken: 0 milliseconds                  │
│ 00:00:19 #61 [Verbose] >   Paket version                                     │
│ 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483                      │
│ 00:00:20 #62 [Verbose] >   Restoring                                         │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │
│ fsproj                                                                       │
│ 00:00:20 #63 [Verbose] >   Starting restore process.                         │
│ 00:00:20 #64 [Verbose] >   Total time taken: 0 milliseconds                  │
│ 00:00:20 #65 [Verbose] >   Restored                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │
│ fsproj (in 298 ms).                                                          │
│ 00:00:21 #66 [Verbose] >                                                     │
│ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
│ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
│ NETSDK1057: You are using a preview version of .NET. See:                    │
│ https://aka.ms/dotnet-support-policy [                                       │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │
│ fsproj]                                                                      │
│ 00:00:25 #67 [Verbose] >   Builder ->                                        │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/bin/Rele │
│ ase/net8.0/linux-x64/Builder.dll                                             │
│ 00:00:25 #68 [Verbose] >   Builder ->                                        │
│ /home/runner/work/polyglot/polyglot/apps/builder/dist                        │
│ 00:00:26 #69 [Debug] executeAsync / exitCode: 0 / output.Length: 1119        │
│ 00:00:26 #70 [Debug] executeAsync / options: { Command =                     │
│    "dotnet publish                                                           │
│ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder │
│ .fsproj" --configuration Release --output                                    │
│ "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime win-x64"   │
│   WorkingDirectory =                                                         │
│    Some                                                                      │
│ "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder"        │
│   CancellationToken = None                                                   │
│   OnLine = None }                                                            │
│ 00:00:26 #71 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f  │
│ for .NET                                                                     │
│ 00:00:26 #72 [Verbose] >   Determining projects to restore...                │
│ 00:00:27 #73 [Verbose] >   Restored                                          │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │
│ fsproj (in 298 ms).                                                          │
│ 00:00:27 #74 [Verbose] >                                                     │
│ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
│ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
│ NETSDK1057: You are using a preview version of .NET. See:                    │
│ https://aka.ms/dotnet-support-policy [                                       │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/Builder. │
│ fsproj]                                                                      │
│ 00:00:31 #75 [Verbose] >   Builder ->                                        │
│ /home/runner/work/polyglot/polyglot/target/polyglot/builder/Builder/bin/Rele │
│ ase/net8.0/win-x64/Builder.dll                                               │
│ 00:00:32 #76 [Verbose] >   Builder ->                                        │
│ /home/runner/work/polyglot/polyglot/apps/builder/dist                        │
│ 00:00:32 #77 [Debug] executeAsync / exitCode: 0 / output.Length: 715         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook Builder.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 330463 bytes to Builder.dib.html
In [ ]:
{ . "$ScriptDir/../apps/parser/build.ps1" } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # DibParser (Polyglot)                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
b/net6.0/System.CommandLine.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsec.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsecCS.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/CommonFSharp.fs
#!import ../../lib/fsharp/Async.fs
#!import ../../lib/fsharp/AsyncSeq.fs
#!import ../../lib/fsharp/Runtime.fs
#!import ../../lib/fsharp/FileSystem.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module CommonFSharp =

    open Common

    /// ## getUnionCaseName

    let inline getUnionCaseName<'T> (x: 'T) =
        match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
        | case, _ -> case.Name


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module AsyncSeq =

    open Common

    /// ## subscribeEvent

    let inline subscribeEvent (event: IEvent<'H, 'A>) map =
        let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 
'A>(event.AddHandler, event.RemoveHandler)
        System.Reactive.Linq.Observable.Select (observable, fun event -> map 
event.EventArgs)
        |> FSharp.Control.AsyncSeq.ofObservableBuffered

    let subscribeToken (token : System.Threading.CancellationToken) =
        let tcs = new System.Threading.Tasks.TaskCompletionSource ()
        System.Action tcs.SetResult |> token.Register |> ignore
        let start = System.DateTime.Now.Ticks
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun (...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Runtime =

    open Common

    /// ## isWindows

    let isWindows =
        fun () ->
            System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
                System.Runtime.InteropServices.OSPlatform.Windows
        |> memoize

    /// ## getExecutableSuffix

    let inline getExecutableSuffix () =
        if isWindows ()
        then ".exe"
        else ""

    /// ## splitCommand

    type private CommandParseStep =
        | Start
        | Path of quoted: bool
        | Arguments

    let splitCommand (command: string) =
        let rec loop (path, args) chars step =
            match chars, step with
            | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module FileSystem =

    open Common

    /// ## Operators

    module Operators =
        let inline (</>) a b =
            System.IO.Path.Combine (a, b)

    open Operators

    /// ## createTempDirectoryName

    let inline createTempDirectoryName () =
        let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name

        System.IO.Path.GetTempPath ()
        </> $"!{root}"
        </> string (newGuidFromDateTime System.DateTime.Now)

    /// ## createTempDirectory

    let inline createTempDirectory () =
        let tempFolder = createTempDirectoryName ()
        let result = System.IO.Directory.CreateDirectory tempFolder

        if not result.Exists then
            let ge...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open FParsec

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## escapeCell (test)                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline escapeCell input =
    input
    |> String.split [[| '\n' |]]
    |> Array.map (function
        | line when line |> String.startsWith "\\#!" || line |> 
String.startsWith "\\#r" ->
            System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
        | line -> line
    )
    |> String.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

$"a{nl}\\#!magic{nl}b{nl}"
|> escapeCell
|> _equal (
    $"a{nl}#!magic{nl}b{nl}"
)

╭─[ 36.85ms - stdout ]─────────────────────────────────────────────────────────╮
│ a                                                                            │
│ #!magic                                                                      │
│ b                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## magicMarker                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let magicMarker : Parser<string, unit> = pstring "#!"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic"
|> run magicMarker
|> _equal (
    Success ("#!", (), Position ("", 2, 1, 3))
)

╭─[ 26.90ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: #!                                                              │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 2                                                             │
│         Line: 1                                                              │
│         Column: 3                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"##!magic"
|> run magicMarker
|> _equal (
    Failure (
        $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

╭─[ 33.26ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure                                                                      │
│       Item1: Error in Ln: 1 Col: 1                                           │
│ ##!magic                                                                     │
│ ^                                                                            │
│ Expecting: '#!'                                                              │
│                                                                              │
│       Item2: ParserError                                                     │
│         Position: Position                                                   │
│           Index: 0                                                           │
│           Line: 1                                                            │
│           Column: 1                                                          │
│           StreamName:                                                        │
│         UserState: <null>                                                    │
│         Messages: ErrorMessageList                                           │
│           Head: ExpectedString                                               │
│             String: #!                                                       │
│             Type: ExpectedString                                             │
│           Tail: <null>                                                       │
│       Item3: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## magicCommand                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let magicCommand =
    magicMarker
    >>. manyTill anyChar newline
    |>> (System.String.Concat >> String.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic

a"
|> run magicCommand
|> _equal (
    Success ("magic", (), Position ("", 8, 2, 1))
)

╭─[ 16.43ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: magic                                                           │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 8                                                             │
│         Line: 2                                                              │
│         Column: 1                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

" #!magic

a"
|> run magicCommand
|> _equal (
    Failure (
        $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

╭─[ 18.48ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure                                                                      │
│       Item1: Error in Ln: 1 Col: 1                                           │
│  #!magic                                                                     │
│ ^                                                                            │
│ Expecting: '#!'                                                              │
│                                                                              │
│       Item2: ParserError                                                     │
│         Position: Position                                                   │
│           Index: 0                                                           │
│           Line: 1                                                            │
│           Column: 1                                                          │
│           StreamName:                                                        │
│         UserState: <null>                                                    │
│         Messages: ErrorMessageList                                           │
│           Head: ExpectedString                                               │
│             String: #!                                                       │
│             Type: ExpectedString                                             │
│           Tail: <null>                                                       │
│       Item3: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## content                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let content =
    (newline >>. magicMarker) <|> (eof >>. preturn "")
    |> attempt
    |> lookAhead
    |> manyTill anyChar
    |>> (System.String.Concat >> String.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run content
|> _equal (
    Success ("#!magic


a", (), Position ("", 14, 7, 1))
)

╭─[ 16.34ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: #!magic                                                         │
│                                                                              │
│                                                                              │
│ a                                                                            │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 14                                                            │
│         Line: 7                                                              │
│         Column: 1                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Block                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Block =
    {
        magic : string
        content : string
    }

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## block                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let block =
    pipe2
        magicCommand
        content
        (fun magic content ->
            {
                magic = magic
                content = content
            })

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run block
|> _equal (
    Success (
        { magic = "magic"; content = "a" },
        (),
        Position ("", 14, 7, 1)
    )
)

╭─[ 19.20ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: Block                                                           │
│         magic: magic                                                         │
│         content: a                                                           │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 14                                                            │
│         Line: 7                                                              │
│         Column: 1                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## blocks                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let blocks =
    skipMany newline
    >>. sepEndBy block (skipMany1 newline)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test


"#!magic1

a

\#!magic2

b

"
|> escapeCell
|> run blocks
|> _equal (
    Success (
        [[
            { magic = "magic1"; content = "a" }
            { magic = "magic2"; content = "b" }
        ]],
        (),
        Position ("", 26, 9, 1)
    )
)

╭─[ 26.63ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item1: FSharpList<Block>                                               │
│         - magic: magic1                                                      │
│           content: a                                                         │
│         - magic: magic2                                                      │
│           content: b                                                         │
│       Item2: <null>                                                          │
│       Item3: Position                                                        │
│         Index: 26                                                            │
│         Line: 9                                                              │
│         Column: 1                                                            │
│         StreamName:                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Output                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Output =
    | Fs
    | Md
    | Spi
    | Spir

let inline kernelOutputs magic =
    match magic with
    | "fsharp" -> [[ Fs ]]
    | "markdown" -> [[ Md ]]
    | "spiral" -> [[ Spi; Spir ]]
    | _ -> [[]]

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## formatBlock                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlock output (block : Block) =
    match output, block with
    | output, { magic = "markdown"; content = content } ->
        let markdownComment =
            match output with
            | Spi | Spir -> "// // "
            | Fs -> "/// "
            | _ -> ""
        content
        |> String.split [[| '\n' |]]
        |> Array.map (String.trimEnd [[||]])
        |> Array.filter (String.endsWith " (test)" >> not)
        |> Array.map (function
            | "" -> markdownComment |> String.trim
            | line -> System.Text.RegularExpressions.Regex.Replace (line, 
"^\\s*", $"$&{markdownComment}")
        )
        |> String.concat "\n"
    | Fs, { magic = "fsharp"; content = content } ->
        let trimmedContent = content |> String.trim
        if trimmedContent |> String.startsWith "//// test" || trimmedContent |> 
String.startsWith "//// ignore"
        then ""
        else
            content
            |> String.split [[| '\n' |]]
            |> Array.filter (String.trimStart [[||]] >> String.startsWith "#r" 
>> not)
            |> String.concat "\n"
    | (Spi | Spir), { magic = "spiral"; content = content } ->
        let trimmedContent = content |> String.trim
        if trimmedContent |> String.startsWith "// // test" || trimmedContent |>
String.startsWith "// // ignore"
        then ""
        else content
    | _ -> ""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

    b

c


\#!markdown


c


\#!fsharp


let a = 1"
|> escapeCell
|> run block
|> function
    | Success (block, _, _) -> formatBlock Fs block
    | Failure (msg, _, _) -> failwith msg
|> _equal "/// a
///
    /// b
///
/// c"

╭─[ 33.84ms - stdout ]─────────────────────────────────────────────────────────╮
│ /// a                                                                        │
│ ///                                                                          │
│     /// b                                                                    │
│ ///                                                                          │
│ /// c                                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## formatBlocks                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlocks output blocks =
    blocks
    |> List.map (formatBlock output)
    |> List.filter ((<>) "")
    |> String.concat "\n\n"
    |> fun s -> s + "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

b


\#!markdown


c


\#!fsharp


let a = 1

\#!markdown

d (test)

\#!fsharp

//// test

let a = 2

\#!markdown

e

\#!fsharp

let a = 3"
|> escapeCell
|> run blocks
|> function
    | Success (blocks, _, _) -> formatBlocks Fs blocks
    | Failure (msg, _, _) -> failwith msg
|> _equal "/// a
///
/// b

/// c

let a = 1

/// e

let a = 3
"

╭─[ 38.38ms - stdout ]─────────────────────────────────────────────────────────╮
│ /// a                                                                        │
│ ///                                                                          │
│ /// b                                                                        │
│                                                                              │
│ /// c                                                                        │
│                                                                              │
│ let a = 1                                                                    │
│                                                                              │
│ /// e                                                                        │
│                                                                              │
│ let a = 3                                                                    │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parse                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parse output input =
    match run blocks input with
    | Success (blocks, _, _) ->
        let blocks =
            blocks
            |> List.filter (fun block ->
                block.magic |> kernelOutputs |> List.contains output || 
block.magic = "markdown"
            )

        match blocks with
        | { magic = "markdown"; content = content } :: _
            when output = Fs
            && content |> String.startsWith "# "
            && content |> String.endsWith ")"
            ->
            let inline indentBlock (block : Block) =
                { block with
                    content =
                        block.content
                        |> String.split [[| '\n' |]]
                        |> Array.fold
                            (fun (lines, isMultiline) line ->
                                let trimmedLine = line |> String.trim
                                if trimmedLine = ""
                                then "" :: lines, isMultiline
                                else
                                    let inline singleQuoteLine () =
                                        trimmedLine |> Seq.sumBy ((=) '"' >> 
System.Convert.ToInt32) = 1
                                        && trimmedLine |> String.contains 
@"'""'" |> not
                                        && trimmedLine |> String.endsWith "{" |>
not
                                        && trimmedLine |> String.endsWith "{|" 
|> not
                                        && trimmedLine |> String.startsWith "}" 
|> not
                                        && trimmedLine |> String.startsWith "|}"
|> not

                                    match isMultiline, trimmedLine |> 
String.splitString [[| $"{q}{q}{q}" |]] with
                                    | false, [[| _; _ |]] ->
                                        $"    {line}" :: lines, true

                                    | true, [[| _; _ |]] ->
                                        line :: lines, false

                                    | false, _ when singleQuoteLine () ->
                                        $"    {line}" :: lines, true

                                    | false, _ when line |> String.startsWith 
"#" && block.magic = "fsharp" ->
                                        line :: lines, false

                                    | false, _ ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () && line |>
String.startsWith "    " ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () ->
                                        line :: lines, false

                                    | true, _ ->
                                        line :: lines, true
                            )
                            ([[]], false)
                        |> fst
                        |> List.rev
                        |> String.concat "\n"
                }

            let moduleName, namespaceName =
                System.Text.RegularExpressions.Regex.Match (content, @"# (.*) 
\((.*)\)$")
                |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value

            let moduleBlock =
                {
                    magic = "fsharp"
                    content =
                        $"#if !INTERACTIVE
namespace {namespaceName}
#endif

module {moduleName} ="
                }

            blocks
            |> List.indexed
            |> List.fold
                (fun blocks (index, block) ->
                    match index with
                    | 0 -> blocks
                    | 1 -> indentBlock block :: moduleBlock :: blocks
                    | _ -> indentBlock block :: blocks
                )
                [[]]
            |> List.rev
        | _ -> blocks
        |> Result.Ok
    | Failure (errorMsg, _, _) -> Result.Error errorMsg

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example1 =
    $"""#!meta

{{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
"fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}

\#!markdown

# TestModule (TestNamespace)

\#!fsharp

\#!import file.dib

\#!fsharp

\#r "nuget:Expecto"

\#!markdown

## ParserLibrary

\#!fsharp

open System

\#!markdown

## x (test)

\#!fsharp

//// ignore

let x = 1

\#!spiral

// // test

inl x = 0i32

\#!spiral

inl x = 0i32

\#!markdown

### TextInput

\#!fsharp

let str1 = "abc
def"

let str2 =
    "abc\
def"

let str3 =
    $"1{{
        1
    }}1"

let str4 =
    $"1{{({{|
        a = 1
    |}}).a}}1"

let str5 =
    "abc \
        def"

let x =
    match '"' with
    | '"' -> true
    | _ -> false

let long1 = {q}{q}{q}a{q}{q}{q}

let long2 =
    {q}{q}{q}
a
{q}{q}{q}

\#!fsharp

type Position =
    {{
#if INTERACTIVE
        line : string
#else
        line : int
#endif
        column : int
    }}"""
    |> escapeCell

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Fs
|> Result.toOption
|> Option.get
|> (formatBlocks Fs)
|> _equal $"""#if !INTERACTIVE
namespace TestNamespace
#endif

module TestModule =

    /// ## ParserLibrary

    open System

    /// ### TextInput

    let str1 = "abc
def"

    let str2 =
        "abc\
def"

    let str3 =
        $"1{{
            1
        }}1"

    let str4 =
        $"1{{({{|
            a = 1
        |}}).a}}1"

    let str5 =
        "abc \
            def"

    let x =
        match '"' with
        | '"' -> true
        | _ -> false

    let long1 = {q}{q}{q}a{q}{q}{q}

    let long2 =
        {q}{q}{q}
a
{q}{q}{q}

    type Position =
        {{
#if INTERACTIVE
            line : string
#else
            line : int
#endif
            column : int
        }}
"""

╭─[ 102.54ms - stdout ]────────────────────────────────────────────────────────╮
│ #if !INTERACTIVE                                                             │
│ namespace TestNamespace                                                      │
│ #endif                                                                       │
│                                                                              │
│ module TestModule =                                                          │
│                                                                              │
│     /// ## ParserLibrary                                                     │
│                                                                              │
│     open System                                                              │
│                                                                              │
│     /// ### TextInput                                                        │
│                                                                              │
│     let str1 = "abc                                                          │
│ def"                                                                         │
│                                                                              │
│     let str2 =                                                               │
│         "abc\                                                                │
│ def"                                                                         │
│                                                                              │
│     let str3 =                                                               │
│         $"1{                                                                 │
│             1                                                                │
│         }1"                                                                  │
│                                                                              │
│     let str4 =                                                               │
│         $"1{({|                                                              │
│             a = 1                                                            │
│         |}).a}1"                                                             │
│                                                                              │
│     let str5 =                                                               │
│         "abc \                                                               │
│             def"                                                             │
│                                                                              │
│     let x =                                                                  │
│         match '"' with                                                       │
│         | '"' -> true                                                        │
│         | _ -> false                                                         │
│                                                                              │
│     let long1 = """a"""                                                      │
│                                                                              │
│     let long2 =                                                              │
│         """                                                                  │
│ a                                                                            │
│ """                                                                          │
│                                                                              │
│     type Position =                                                          │
│         {                                                                    │
│ #if INTERACTIVE                                                              │
│             line : string                                                    │
│ #else                                                                        │
│             line : int                                                       │
│ #endif                                                                       │
│             column : int                                                     │
│         }                                                                    │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Md
|> Result.toOption
|> Option.get
|> (formatBlocks Md)
|> _equal "# TestModule (TestNamespace)

## ParserLibrary

### TextInput
"

╭─[ 88.94ms - stdout ]─────────────────────────────────────────────────────────╮
│ # TestModule (TestNamespace)                                                 │
│                                                                              │
│ ## ParserLibrary                                                             │
│                                                                              │
│ ### TextInput                                                                │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spi
|> Result.toOption
|> Option.get
|> (formatBlocks Spi)
|> _equal "// // # TestModule (TestNamespace)

// // ## ParserLibrary

inl x = 0i32

// // ### TextInput
"

╭─[ 90.84ms - stdout ]─────────────────────────────────────────────────────────╮
│ // // # TestModule (TestNamespace)                                           │
│                                                                              │
│ // // ## ParserLibrary                                                       │
│                                                                              │
│ inl x = 0i32                                                                 │
│                                                                              │
│ // // ### TextInput                                                          │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parseDibCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseDibCode output file = async {
    let getLocals () = $"output: {output} / file: {file} / {getLocals ()}"
    trace Debug (fun () -> "parseDibCode") getLocals
    let! input = file |> FileSystem.readAllTextAsync
    match parse output input with
    | Result.Ok blocks -> return blocks |> formatBlocks output
    | Result.Error msg -> return failwith msg
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## writeDibCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline writeDibCode output path = async {
    let getLocals () = $"output: {output} / path: {path} / {getLocals ()}"
    trace Debug (fun () -> "writeDibCode") getLocals
    let! result = parseDibCode output path
    let outputPath = path |> String.replace ".dib" $".{output |> string |> 
String.toLower}"
    do! result |> FileSystem.writeAllTextAsync outputPath
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Arguments                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
        File of file : string * Output

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | File _ -> nameof File

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

╭─[ 81.34ms - return value ]───────────────────────────────────────────────────╮
│ USAGE: dotnet [--help] <file> <fs|md|spi|spir>                               │
│                                                                              │
│ FILE:                                                                        │
│                                                                              │
│     <file> <fs|md|spi|spir>                                                  │
│                           File                                               │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --help                display this list of options.                      │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## main                                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let files =
        argsMap.[[nameof Arguments.File]]
        |> List.map (function
            | Arguments.File (path, output) -> path, output
        )

    files
    |> List.map (fun (path, output) -> path |> writeDibCode output)
    |> Async.Parallel
    |> Async.Ignore
    |> Async.runWithTimeout 30000
    |> function
        | Some () -> 0
        | None -> 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> Runtime.splitArgs
    |> Seq.toArray

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

╭─[ 157.93ms - return value ]──────────────────────────────────────────────────╮
│ <div class="dni-plaintext"><pre>0</pre></div><style>                         │
│ .dni-code-hint {                                                             │
│     font-style: italic;                                                      │
│     overflow: hidden;                                                        │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview {                                                              │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview td {                                                           │
│     vertical-align: top;                                                     │
│     text-align: start;                                                       │
│ }                                                                            │
│ details.dni-treeview {                                                       │
│     padding-left: 1em;                                                       │
│ }                                                                            │
│ table td {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ table tr {                                                                   │
│     vertical-align: top;                                                     │
│     margin: 0em 0px;                                                         │
│ }                                                                            │
│ table tr td pre                                                              │
│ {                                                                            │
│     vertical-align: top !important;                                          │
│     margin: 0em 0px !important;                                              │
│ }                                                                            │
│ table th {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ </style>                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 159.38ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Debug] writeDibCode / output: Fs / path: DibParser.dib          │
│ 00:00:00 #2 [Debug] parseDibCode / output: Fs / file: DibParser.dib          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook DibParser.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 366480 bytes to DibParser.dib.html
00:00:00 #1 [Debug] persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [lib/fsharp/Common.fs; lib/fsharp/CommonFSharp.fs; lib/fsharp/Async.fs; ... ] / name: DibParser / code.Length: 9066
00:00:00 #2 [Debug] buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj
00:00:00 #3 [Debug] executeAsync / options: { Command =
   "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64"
  WorkingDirectory =
   Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser"
  CancellationToken = None
  OnLine = None }
00:00:00 #4 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:00 #5 [Verbose] >   Determining projects to restore...
00:00:00 #6 [Verbose] >   Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483
00:00:00 #7 [Verbose] >   The last full restore is still up to date. Nothing left to do.
00:00:00 #8 [Verbose] >   Total time taken: 0 milliseconds
00:00:01 #9 [Verbose] >   Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483
00:00:01 #10 [Verbose] >   Restoring /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj
00:00:01 #11 [Verbose] >   Starting restore process.
00:00:01 #12 [Verbose] >   Total time taken: 0 milliseconds
00:00:02 #13 [Verbose] >   Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj (in 307 ms).
00:00:02 #14 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj]
00:00:06 #15 [Verbose] >   DibParser -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/bin/Release/net8.0/linux-x64/DibParser.dll
00:00:07 #16 [Verbose] >   DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist
00:00:07 #17 [Debug] executeAsync / exitCode: 0 / output.Length: 1138
00:00:07 #18 [Debug] executeAsync / options: { Command =
   "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime win-x64"
  WorkingDirectory =
   Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser"
  CancellationToken = None
  OnLine = None }
00:00:07 #19 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:07 #20 [Verbose] >   Determining projects to restore...
00:00:08 #21 [Verbose] >   Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj (in 325 ms).
00:00:08 #22 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/DibParser.fsproj]
00:00:12 #23 [Verbose] >   DibParser -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/DibParser/bin/Release/net8.0/win-x64/DibParser.dll
00:00:13 #24 [Verbose] >   DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist
00:00:13 #25 [Debug] executeAsync / exitCode: 0 / output.Length: 730

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # JsonParser (Polyglot)                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import Parser.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Parser =

    open Common

    /// ### TextInput

    type Position =
        {
            line : int
            column : int
        }

    let initialPos = { line = 0; column = 0 }

    let inline incrCol (pos : Position) =
        { pos with column = pos.column + 1 }

    let inline incrLine pos =
        { line = pos.line + 1; column = 0 }

    type InputState =
        {
            lines : string[[]]
            position : Position
        }

    let inline fromStr str =
        {
            lines =
                if str |> String.IsNullOrEmpty
                then [[||]]
                else str |> String.splitString [[| "\r\n"; "\n" |]]
            position = initialPos
        }

   ...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open Parser

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## JsonParser                                                                │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
(*
// --------------------------------
JSON spec from http://www.json.org/
// --------------------------------

The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase
it here:

* A `value` can be a `string` or a `number` or a `bool` or `null` or an `object`
or an `array`.
  * These structures can be nested.
* A `string` is a sequence of zero or more Unicode characters, wrapped in double
quotes, using backslash escapes.
* A `number` is very much like a C or Java number, except that the octal and 
hexadecimal formats are not used.
* A `boolean` is the literal `true` or `false`
* A `null` is the literal `null`
* An `object` is an unordered set of name/value pairs.
  * An object begins with { (left brace) and ends with } (right brace).
  * Each name is followed by : (colon) and the name/value pairs are separated by
, (comma).
* An `array` is an ordered collection of values.
  * An array begins with [[ (left bracket) and ends with ]] (right bracket).
  * Values are separated by , (comma).
* Whitespace can be inserted between any pair of tokens.

*)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * 
Input>) =
    match actual, expected with
    | Success (_actual, _), Success _expected ->
        printResult actual
        _actual |> _equal _expected
    | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 =
p2 ->
        printResult actual
    | _ ->
        printfn $"Actual: {actual}"
        printfn $"Expected: {expected}"
        failwith "Parse failed"
    actual

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### JValue                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type JValue =
    | JString of string
    | JNumber of float
    | JBool   of bool
    | JNull
    | JObject of Map<string, JValue>
    | JArray  of JValue list

── fsharp ──────────────────────────────────────────────────────────────────────
let jValue, jValueRef = createParserForwardedToRef<JValue> ()

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jNull                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let jNull =
    pstring "null"
    >>% JNull
    <?> "null"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

jValueRef <|
    choice
        [[
            jNull
        ]]

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jValue "null"
|> parserEqual (Success JNull)

╭─[ 205.69ms - return value ]──────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNull, { lines = [                      │
│ |&quot;null&quot;|]<br/>                  position = { line = 0<br/>         │
│ column = 4 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNull, { lines = [|&quot;null&quot;|]<br/>      │
│ position = { line = 0<br/>               column = 4 }                        │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead> │
│ <tr></tr></thead><tbody><tr><td>IsJString</td><td><d...                      │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 209.07ms - stdout ]────────────────────────────────────────────────────────╮
│ JNull                                                                        │
│ JValue                                                                       │
│       IsJString: False                                                       │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: True                                                          │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNull "nulp"
|> parserEqual (
    Failure (
        "null",
        "Unexpected 'p'",
        { currentLine = "nulp"; line = 0; column = 3 }
    )
)

╭─[ 38.28ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Failure (&quot;null&quot;, &quot;Unexpected      │
│ &#39;p&#39;&quot;, { currentLine = &quot;nulp&quot;<br/>                     │
│ line = 0<br/>                                     column = 3                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>null</pre></div></td></tr><tr><td>Item2</td><td>< │
│ div class="dni-plaintext"><pre>Unexpected                                    │
│ &#39;p&#39;</pre></div></td></tr><tr><td>Item3</td><td><details              │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
│ currentLine = &quot;nulp&quot;<br/>  line = 0<br/>  column = 3               │
│ }</code></span></summary><div><table><thead><tr></tr></thead...              │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 39.47ms - stdout ]─────────────────────────────────────────────────────────╮
│ Line:0 Col:3 Error parsing null                                              │
│ nulp                                                                         │
│    ^Unexpected 'p'                                                           │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jBool                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let jBool =
    let jtrue =
        pstring "true"
        >>% JBool true
    let jfalse =
        pstring "false"
        >>% JBool false

    jtrue <|> jfalse
    <?> "bool"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

jValueRef <|
    choice
        [[
            jNull
            jBool
        ]]

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jBool "true"
|> parserEqual (Success (JBool true))

╭─[ 33.84ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JBool true, { lines = [                 │
│ |&quot;true&quot;|]<br/>                       position = { line = 0<br/>    │
│ column = 4 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JBool true, { lines = [|&quot;true&quot;|]<br/> │
│ position = { line = 0<br/>               column = 4 }                        │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JBool                                            │
│ true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr.. │
│ .                                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 35.26ms - stdout ]─────────────────────────────────────────────────────────╮
│ JBool true                                                                   │
│ JBool                                                                        │
│       Item: True                                                             │
│       IsJString: False                                                       │
│       IsJNumber: False                                                       │
│       IsJBool: True                                                          │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jBool "false"
|> parserEqual (Success (JBool false))

╭─[ 24.24ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JBool false, { lines = [                │
│ |&quot;false&quot;|]<br/>                        position = { line = 0<br/>  │
│ column = 5 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JBool false, { lines = [                        │
│ |&quot;false&quot;|]<br/>  position = { line = 0<br/>               column = │
│ 5 }                                                                          │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JBool                                            │
│ false</code></span></summary><div><table><thead><tr></tr></thead><tb...      │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 25.62ms - stdout ]─────────────────────────────────────────────────────────╮
│ JBool false                                                                  │
│ JBool                                                                        │
│       Item: False                                                            │
│       IsJString: False                                                       │
│       IsJNumber: False                                                       │
│       IsJBool: True                                                          │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jBool "truX"
|> parserEqual (
    Failure (
        "bool",
        "Unexpected 't'",
        { currentLine = "truX"; line = 0; column = 0 }
    )
)

╭─[ 19.65ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Failure (&quot;bool&quot;, &quot;Unexpected      │
│ &#39;t&#39;&quot;, { currentLine = &quot;truX&quot;<br/>                     │
│ line = 0<br/>                                     column = 0                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>bool</pre></div></td></tr><tr><td>Item2</td><td>< │
│ div class="dni-plaintext"><pre>Unexpected                                    │
│ &#39;t&#39;</pre></div></td></tr><tr><td>Item3</td><td><details              │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
│ currentLine = &quot;truX&quot;<br/>  line = 0<br/>  column = 0               │
│ }</code></span></summary><div><table><thead><tr></tr></thead...              │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 20.80ms - stdout ]─────────────────────────────────────────────────────────╮
│ Line:0 Col:0 Error parsing bool                                              │
│ truX                                                                         │
│ ^Unexpected 't'                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jUnescapedChar                                                           │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let jUnescapedChar =
    satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jUnescapedChar "a"
|> parserEqual (Success 'a')

╭─[ 37.62ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (&#39;a&#39;, { lines = [                │
│ |&quot;a&quot;|]<br/>                position = { line = 0<br/>              │
│ column = 1 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(a, { lines = [|&quot;a&quot;|]<br/>  position = │
│ { line = 0<br/>               column = 1 }                                   │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>a</pre></div></td></tr><tr><td>Item2</td><td><det │
│ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines │
│ = [|&quot;a&quot;|]<br/...                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 38.92ms - stdout ]─────────────────────────────────────────────────────────╮
│ 'a'                                                                          │
│ a                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jUnescapedChar "\\"
|> parserEqual (
    Failure (
        "char",
        "Unexpected '\\'",
        { currentLine = "\\"; line = 0; column = 0 }
    )
)

╭─[ 27.36ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Failure (&quot;char&quot;, &quot;Unexpected      │
│ &#39;\&#39;&quot;, { currentLine = &quot;\&quot;<br/>                        │
│ line = 0<br/>                                     column = 0                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>char</pre></div></td></tr><tr><td>Item2</td><td>< │
│ div class="dni-plaintext"><pre>Unexpected                                    │
│ &#39;\&#39;</pre></div></td></tr><tr><td>Item3</td><td><details              │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
│ currentLine = &quot;\&quot;<br/>  line = 0<br/>  column = 0                  │
│ }</code></span></summary><div><table><thead><tr></tr></thead><tbod...        │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 28.49ms - stdout ]─────────────────────────────────────────────────────────╮
│ Line:0 Col:0 Error parsing char                                              │
│ \                                                                            │
│ ^Unexpected '\'                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jEscapedChar                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let jEscapedChar =
    [[
        ("\\\"",'\"')
        ("\\\\",'\\')
        ("\\/",'/')
        ("\\b",'\b')
        ("\\f",'\f')
        ("\\n",'\n')
        ("\\r",'\r')
        ("\\t",'\t')
    ]]
    |> List.map (fun (toMatch, result) ->
        pstring toMatch >>% result
    )
    |> choice
    <?> "escaped char"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jEscapedChar "\\\\"
|> parserEqual (Success '\\')

╭─[ 23.81ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = [               │
│ |&quot;\\&quot;|]<br/>                 position = { line = 0<br/>            │
│ column = 2 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br/>  position  │
│ = { line = 0<br/>               column = 2 }                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>\</pre></div></td></tr><tr><td>Item2</td><td><det │
│ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines │
│ = [|&quot;\\&quot;...                                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 25.18ms - stdout ]─────────────────────────────────────────────────────────╮
│ '\\'                                                                         │
│ \                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jEscapedChar "\\t"
|> parserEqual (Success '\t')

╭─[ 21.69ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (&#39;\009&#39;, { lines = [             │
│ |&quot;\t&quot;|]<br/>                   position = { line = 0<br/>          │
│ column = 2 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(	, { lines = [|&quot;\t&quot;|]<br/>  position =  │
│ { line = 0<br/>               column = 2 }                                   │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div class="dni-plaintext"><pre>	                               │
│ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
│ |&quot;\t...                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 23.03ms - stdout ]─────────────────────────────────────────────────────────╮
│ '\009'                                                                       │
│ 	                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jEscapedChar @"\\"
|> parserEqual (Success '\\')

╭─[ 21.00ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = [               │
│ |&quot;\\&quot;|]<br/>                 position = { line = 0<br/>            │
│ column = 2 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br/>  position  │
│ = { line = 0<br/>               column = 2 }                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>\</pre></div></td></tr><tr><td>Item2</td><td><det │
│ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines │
│ = [|&quot;\\&quot;...                                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 22.30ms - stdout ]─────────────────────────────────────────────────────────╮
│ '\\'                                                                         │
│ \                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jEscapedChar @"\n"
|> parserEqual (Success '\n')

╭─[ 20.91ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (&#39;\010&#39;, { lines = [             │
│ |&quot;<br/>&quot;|]<br/>                   position = { line = 0<br/>       │
│ column = 2 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(<br/>, { lines = [|&quot;<br/>&quot;|]<br/>     │
│ position = { line = 0<br/>               column = 2 }                        │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div class="dni-plaintext"><pre>                              │
│ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines =    │
│ ...                                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 22.21ms - stdout ]─────────────────────────────────────────────────────────╮
│ '\010'                                                                       │
│                                                                              │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jEscapedChar "a"
|> parserEqual (
    Failure (
        "escaped char",
        "Unexpected 'a'",
        { currentLine = "a"; line = 0; column = 0 }
    )
)

╭─[ 19.04ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Failure (&quot;escaped char&quot;,               │
│ &quot;Unexpected &#39;a&#39;&quot;, { currentLine = &quot;a&quot;<br/>       │
│ line = 0<br/>                                             column = 0         │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div class="dni-plaintext"><pre>escaped                       │
│ char</pre></div></td></tr><tr><td>Item2</td><td><div                         │
│ class="dni-plaintext"><pre>Unexpected                                        │
│ &#39;a&#39;</pre></div></td></tr><tr><td>Item3</td><td><details              │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
│ currentLine = &quot;a&quot;<br/>  line = 0<br/>  column = 0                  │
│ }</code></span></summary><div><tab...                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 20.20ms - stdout ]─────────────────────────────────────────────────────────╮
│ Line:0 Col:0 Error parsing escaped char                                      │
│ a                                                                            │
│ ^Unexpected 'a'                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jUnicodeChar                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let jUnicodeChar =
    let backslash = pchar '\\'
    let uChar = pchar 'u'
    let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' 
]])
    let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit

    let inline convertToChar (((h1, h2), h3), h4) =
        let str = $"%c{h1}%c{h2}%c{h3}%c{h4}"
        Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char

    backslash >>. uChar >>. fourHexDigits
    |>> convertToChar

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jUnicodeChar "\\u263A"
|> parserEqual (Success '☺')

╭─[ 33.75ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (&#39;☺&#39;, { lines = [                │
│ |&quot;\u263A&quot;|]<br/>                position = { line = 0<br/>         │
│ column = 6 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(☺, { lines = [|&quot;\u263A&quot;|]<br/>        │
│ position = { line = 0<br/>               column = 6 }                        │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>☺</pre></div></td></tr><tr><td>Item2</td><td><det │
│ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines │
│ = [|&quot;\u2...                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 35.15ms - stdout ]─────────────────────────────────────────────────────────╮
│ '☺'                                                                          │
│ ☺                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jString                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let quotedString =
    let quote = pchar '\"' <?> "quote"
    let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar

    quote >>. manyChars jchar .>> quote

── fsharp ──────────────────────────────────────────────────────────────────────
let jString =
    quotedString
    |>> JString
    <?> "quoted string"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

jValueRef <|
    choice
        [[
            jNull
            jBool
            jString
        ]]

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jString "\"\""
|> parserEqual (Success (JString ""))

╭─[ 33.97ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JString &quot;&quot;, { lines = [       │
│ |&quot;&quot;&quot;&quot;|]<br/>                       position = { line =   │
│ 0<br/>                                    column = 2 }                       │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JString &quot;&quot;, { lines = [               │
│ |&quot;&quot;&quot;&quot;|]<br/>  position = { line = 0<br/>                 │
│ column = 2 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JString &quot;&quot;</code></span></summary>...  │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 35.37ms - stdout ]─────────────────────────────────────────────────────────╮
│ JString ""                                                                   │
│ JString                                                                      │
│       Item:                                                                  │
│       IsJString: True                                                        │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jString "\"a\""
|> parserEqual (Success (JString "a"))

╭─[ 22.60ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JString &quot;a&quot;, { lines = [      │
│ |&quot;&quot;a&quot;&quot;|]<br/>                        position = { line = │
│ 0<br/>                                     column = 3 }                      │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JString &quot;a&quot;, { lines = [              │
│ |&quot;&quot;a&quot;&quot;|]<br/>  position = { line = 0<br/>                │
│ column = 3 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JString &quot;a&quot;</code></span></s...        │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 23.98ms - stdout ]─────────────────────────────────────────────────────────╮
│ JString "a"                                                                  │
│ JString                                                                      │
│       Item: a                                                                │
│       IsJString: True                                                        │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jString "\"ab\""
|> parserEqual (Success (JString "ab"))

╭─[ 21.56ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JString &quot;ab&quot;, { lines = [     │
│ |&quot;&quot;ab&quot;&quot;|]<br/>                         position = { line │
│ = 0<br/>                                      column = 4 }                   │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JString &quot;ab&quot;, { lines = [             │
│ |&quot;&quot;ab&quot;&quot;|]<br/>  position = { line = 0<br/>               │
│ column = 4 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JString &quot;ab&quot;</code></s...              │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 22.93ms - stdout ]─────────────────────────────────────────────────────────╮
│ JString "ab"                                                                 │
│ JString                                                                      │
│       Item: ab                                                               │
│       IsJString: True                                                        │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jString "\"ab\\tde\""
|> parserEqual (Success (JString "ab\tde"))

╭─[ 21.62ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JString &quot;ab	de&quot;, { lines = [    │
│ |&quot;&quot;ab\tde&quot;&quot;|]<br/>                            position = │
│ { line = 0<br/>                                         column = 8 }         │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JString &quot;ab	de&quot;, { lines = [            │
│ |&quot;&quot;ab\tde&quot;&quot;|]<br/>  position = { line = 0<br/>           │
│ column = 8 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JString &quo...                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 22.95ms - stdout ]─────────────────────────────────────────────────────────╮
│ JString "ab	de"                                                                │
│ JString                                                                      │
│       Item: ab	de                                                              │
│       IsJString: True                                                        │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jString "\"ab\\u263Ade\""
|> parserEqual (Success (JString "ab☺de"))

╭─[ 22.28ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JString &quot;ab☺de&quot;, { lines = [  │
│ |&quot;&quot;ab\u263Ade&quot;&quot;|]<br/>                                   │
│ position = { line = 0<br/>                                         column =  │
│ 12 }                                                                         │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JString &quot;ab☺de&quot;, { lines = [          │
│ |&quot;&quot;ab\u263Ade&quot;&quot;|]<br/>  position = { line = 0<br/>       │
│ column = 12 }                                                                │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JS...                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 23.54ms - stdout ]─────────────────────────────────────────────────────────╮
│ JString "ab☺de"                                                              │
│ JString                                                                      │
│       Item: ab☺de                                                            │
│       IsJString: True                                                        │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jNumber                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let jNumber =
    let optSign = opt (pchar '-')

    let zero = pstring "0"

    let digitOneNine =
        satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9"

    let digit =
        satisfy Char.IsDigit "digit"

    let point = pchar '.'

    let e = pchar 'e' <|> pchar 'E'

    let optPlusMinus = opt (pchar '-' <|> pchar '+')

    let nonZeroInt =
        digitOneNine .>>. manyChars digit
        |>> fun (first, rest) -> string first + rest

    let intPart = zero <|> nonZeroInt

    let fractionPart = point >>. manyChars1 digit

    let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit

    let inline (|>?) opt f =
        match opt with
        | None -> ""
        | Some x -> f x

    let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) =
        let signStr =
            optSign
            |>? string

        let fractionPartStr =
            fractionPart
            |>? (fun digits -> "." + digits)

        let expPartStr =
            expPart
            |>? fun (optSign, digits) ->
                let sign = optSign |>? string
                "e" + sign + digits

        (signStr + intPart + fractionPartStr + expPartStr)
        |> float
        |> JNumber

    optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart
    |>> convertToJNumber
    <?> "number"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

jValueRef <|
    choice
        [[
            jNull
            jBool
            jString
            jNumber
        ]]

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber "123"
|> parserEqual (Success (JNumber 123.0))

╭─[ 45.79ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [              │
│ |&quot;123&quot;|]<br/>                          position = { line = 0<br/>  │
│ column = 3 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber 123.0, { lines = [                      │
│ |&quot;123&quot;|]<br/>  position = { line = 0<br/>               column = 3 │
│ }                                                                            │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ 123.0</code></span></summary><div><table><thead><tr></tr></the...            │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 47.32ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber 123.0                                                                │
│ JNumber                                                                      │
│       Item: 123                                                              │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber "-123"
|> parserEqual (Success (JNumber -123.0))

╭─[ 24.31ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
│ |&quot;-123&quot;|]<br/>                           position = { line =       │
│ 0<br/>                                        column = 4 }                   │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
│ |&quot;-123&quot;|]<br/>  position = { line = 0<br/>               column =  │
│ 4 }                                                                          │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ -123.0</code></span></summary><div><table><thead><tr></t...                  │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 25.67ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber -123.0                                                               │
│ JNumber                                                                      │
│       Item: -123                                                             │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber "123.4"
|> parserEqual (Success (JNumber 123.4))

╭─[ 24.19ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [              │
│ |&quot;123.4&quot;|]<br/>                          position = { line =       │
│ 0<br/>                                       column = 5 }                    │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber 123.4, { lines = [                      │
│ |&quot;123.4&quot;|]<br/>  position = { line = 0<br/>               column = │
│ 5 }                                                                          │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ 123.4</code></span></summary><div><table><thead><tr></tr><...                │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 25.49ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber 123.4                                                                │
│ JNumber                                                                      │
│       Item: 123.4                                                            │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber "-123."
|> parserEqual (Success (JNumber -123.0))

╭─[ 22.18ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
│ |&quot;-123.&quot;|]<br/>                           position = { line =      │
│ 0<br/>                                        column = 4 }                   │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
│ |&quot;-123.&quot;|]<br/>  position = { line = 0<br/>               column = │
│ 4 }                                                                          │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ -123.0</code></span></summary><div><table><thead><tr><...                    │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 23.46ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber -123.0                                                               │
│ JNumber                                                                      │
│       Item: -123                                                             │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber "00.1"
|> parserEqual (Success (JNumber 0.0))

╭─[ 24.52ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber 0.0, { lines = [                │
│ |&quot;00.1&quot;|]<br/>                        position = { line = 0<br/>   │
│ column = 1 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber 0.0, { lines = [                        │
│ |&quot;00.1&quot;|]<br/>  position = { line = 0<br/>               column =  │
│ 1 }                                                                          │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbod...      │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 25.88ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber 0.0                                                                  │
│ JNumber                                                                      │
│       Item: 0                                                                │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let jNumber_ = jNumber .>> spaces1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber_ "123"
|> parserEqual (Success (JNumber 123.0))

╭─[ 51.32ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [              │
│ |&quot;123&quot;|]<br/>                          position = { line = 1<br/>  │
│ column = 0 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber 123.0, { lines = [                      │
│ |&quot;123&quot;|]<br/>  position = { line = 1<br/>               column = 0 │
│ }                                                                            │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ 123.0</code></span></summary><div><table><thead><tr></tr></the...            │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 52.81ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber 123.0                                                                │
│ JNumber                                                                      │
│       Item: 123                                                              │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber_ "-123"
|> parserEqual (Success (JNumber -123.0))

╭─[ 23.27ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
│ |&quot;-123&quot;|]<br/>                           position = { line =       │
│ 1<br/>                                        column = 0 }                   │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
│ |&quot;-123&quot;|]<br/>  position = { line = 1<br/>               column =  │
│ 0 }                                                                          │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ -123.0</code></span></summary><div><table><thead><tr></t...                  │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 24.67ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber -123.0                                                               │
│ JNumber                                                                      │
│       Item: -123                                                             │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber_ "-123."
|> parserEqual (
    Failure (
        "number andThen many1 whitespace",
        "Unexpected '.'",
        { currentLine = "-123."; line = 0; column = 4 }
    )
)

╭─[ 19.79ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Failure<br/>  (&quot;number andThen many1        │
│ whitespace&quot;, &quot;Unexpected &#39;.&#39;&quot;, { currentLine =        │
│ &quot;-123.&quot;<br/>                                                       │
│ line = 0<br/>                                                                │
│ column = 4                                                                   │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div class="dni-plaintext"><pre>number andThen many1          │
│ whitespace</pre></div></td></tr><tr><td>Item2</td><td><div                   │
│ class="dni-plaintext"><pre>Unexpected                                        │
│ &#39;.&#39;</pre></div></td></tr><tr><td>Item3</td><td><details              │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
│ currentLine = &quot;...                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 20.85ms - stdout ]─────────────────────────────────────────────────────────╮
│ Line:0 Col:4 Error parsing number andThen many1 whitespace                   │
│ -123.                                                                        │
│     ^Unexpected '.'                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber_ "123.4"
|> parserEqual (Success (JNumber 123.4))

╭─[ 23.12ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [              │
│ |&quot;123.4&quot;|]<br/>                          position = { line =       │
│ 1<br/>                                       column = 0 }                    │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber 123.4, { lines = [                      │
│ |&quot;123.4&quot;|]<br/>  position = { line = 1<br/>               column = │
│ 0 }                                                                          │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ 123.4</code></span></summary><div><table><thead><tr></tr><...                │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 24.59ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber 123.4                                                                │
│ JNumber                                                                      │
│       Item: 123.4                                                            │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber_ "00.4"
|> parserEqual (
    Failure (
        "number andThen many1 whitespace",
        "Unexpected '0'",
        { currentLine = "00.4"; line = 0; column = 1 }
    )
)

╭─[ 18.82ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Failure<br/>  (&quot;number andThen many1        │
│ whitespace&quot;, &quot;Unexpected &#39;0&#39;&quot;, { currentLine =        │
│ &quot;00.4&quot;<br/>                                                        │
│ line = 0<br/>                                                                │
│ column = 1                                                                   │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div class="dni-plaintext"><pre>number andThen many1          │
│ whitespace</pre></div></td></tr><tr><td>Item2</td><td><div                   │
│ class="dni-plaintext"><pre>Unexpected                                        │
│ &#39;0&#39;</pre></div></td></tr><tr><td>Item3</td><td><details              │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
│ currentLine = &quot;0...                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 19.88ms - stdout ]─────────────────────────────────────────────────────────╮
│ Line:0 Col:1 Error parsing number andThen many1 whitespace                   │
│ 00.4                                                                         │
│  ^Unexpected '0'                                                             │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber_ "123e4"
|> parserEqual (Success (JNumber 1230000.0))

╭─[ 25.36ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = [          │
│ |&quot;123e4&quot;|]<br/>                              position = { line =   │
│ 1<br/>                                           column = 0 }                │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber 1230000.0, { lines = [                  │
│ |&quot;123e4&quot;|]<br/>  position = { line = 1<br/>               column = │
│ 0 }                                                                          │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ 1230000.0</code></span></summary><div><tab...                                │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 26.69ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber 1230000.0                                                            │
│ JNumber                                                                      │
│       Item: 1230000                                                          │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber_ "123.4e5"
|> parserEqual (Success (JNumber 12340000.0))

╭─[ 23.44ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = [         │
│ |&quot;123.4e5&quot;|]<br/>                               position = { line  │
│ = 1<br/>                                            column = 0 }             │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber 12340000.0, { lines = [                 │
│ |&quot;123.4e5&quot;|]<br/>  position = { line = 1<br/>               column │
│ = 0 }                                                                        │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber 12340000.0</code></span></summary>...    │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 24.68ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber 12340000.0                                                           │
│ JNumber                                                                      │
│       Item: 12340000                                                         │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jNumber_ "123.4e-5"
|> parserEqual (Success (JNumber 0.001234))

╭─[ 22.64ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = [           │
│ |&quot;123.4e-5&quot;|]<br/>                             position = { line = │
│ 1<br/>                                          column = 0 }                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JNumber 0.001234, { lines = [                   │
│ |&quot;123.4e-5&quot;|]<br/>  position = { line = 1<br/>                     │
│ column = 0 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>JNumber                                          │
│ 0.001234</code></span></summary><div><ta...                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 23.87ms - stdout ]─────────────────────────────────────────────────────────╮
│ JNumber 0.001234                                                             │
│ JNumber                                                                      │
│       Item: 0.001234                                                         │
│       IsJString: False                                                       │
│       IsJNumber: True                                                        │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jArray                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let jArray =
    let left = pchar '[[' .>> spaces
    let right = pchar ']]' .>> spaces
    let comma = pchar ',' .>> spaces
    let value = jValue .>> spaces

    let values = sepBy value comma

    between left values right
    |>> JArray
    <?> "array"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

jValueRef <|
    choice
        [[
            jNull
            jBool
            jString
            jNumber
            jArray
        ]]

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jArray "[[ 1, 2 ]]"
|> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]]))

╭─[ 63.01ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], {    │
│ lines = [|&quot;[ 1, 2 ]&quot;|]<br/>                                        │
│ position = { line = 1<br/>                                                   │
│ column = 0 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = [  │
│ |&quot;[ 1, 2 ]&quot;|]<br/>  position = { line = 1<br/>                     │
│ column = 0 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span class="d...      │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 64.57ms - stdout ]─────────────────────────────────────────────────────────╮
│ JArray [JNumber 1.0; JNumber 2.0]                                            │
│ JArray                                                                       │
│       Item: FSharpList<JValue>                                               │
│         - Item: 1                                                            │
│           IsJString: False                                                   │
│           IsJNumber: True                                                    │
│           IsJBool: False                                                     │
│           IsJNull: False                                                     │
│           IsJObject: False                                                   │
│           IsJArray: False                                                    │
│         - Item: 2                                                            │
│           IsJString: False                                                   │
│           IsJNumber: True                                                    │
│           IsJBool: False                                                     │
│           IsJNull: False                                                     │
│           IsJObject: False                                                   │
│           IsJArray: False                                                    │
│       IsJString: False                                                       │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: False                                                       │
│       IsJArray: True                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jArray "[[ 1, 2, ]]"
|> parserEqual (
    Failure (
        "array",
        "Unexpected ','",
        { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 }
    )
)

╭─[ 24.77ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Failure (&quot;array&quot;, &quot;Unexpected     │
│ &#39;,&#39;&quot;, { currentLine = &quot;[ 1, 2, ]&quot;<br/>                │
│ line = 0<br/>                                      column = 6                │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>array</pre></div></td></tr><tr><td>Item2</td><td> │
│ <div class="dni-plaintext"><pre>Unexpected                                   │
│ &#39;,&#39;</pre></div></td></tr><tr><td>Item3</td><td><details              │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
│ currentLine = &quot;[ 1, 2, ]&quot;<br/>  line = 0<br/>  column = 6          │
│ }</code></span></summary><div><table><thead><t...                            │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 26.01ms - stdout ]─────────────────────────────────────────────────────────╮
│ Line:0 Col:6 Error parsing array                                             │
│ [ 1, 2, ]                                                                    │
│       ^Unexpected ','                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jObject                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let jObject =
    let left = spaces >>. pchar '{' .>> spaces
    let right = pchar '}' .>> spaces
    let colon = pchar ':' .>> spaces
    let comma = pchar ',' .>> spaces
    let key = quotedString .>> spaces
    let value = jValue .>> spaces

    let keyValue = (key .>> colon) .>>. value
    let keyValues = sepBy keyValue comma

    between left keyValues right
    |>> Map.ofList
    |>> JObject
    <?> "object"

── fsharp ──────────────────────────────────────────────────────────────────────
jValueRef <|
    choice
        [[
            jNull
            jBool
            jString
            jNumber
            jArray
            jObject
        ]]

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jObject """{ "a":1, "b"  :  2 }"""
|> parserEqual (
    Success (
        JObject (
            Map.ofList [[
                "a", JNumber 1.0
                "b", JNumber 2.0
            ]]
        )
    )
)

╭─[ 106.89ms - return value ]──────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success<br/>  (JObject (map [(&quot;a&quot;,     │
│ JNumber 1.0); (&quot;b&quot;, JNumber 2.0)]),<br/>   { lines = [|&quot;{     │
│ &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br/>     position = { line =  │
│ 1<br/>                  column = 0 }                                         │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item</td><td><details class="dni-treeview"><summary><span                   │
│ class="dni-code-hint"><code>(JObject (map [(&quot;a&quot;, JNumber 1.0);     │
│ (&quot;b&quot;, JNumber 2.0)]), { lines = [|&quot;{ &quot;a&quot;:1,         │
│ &quot;b&quot;  :  2 }&quot;|]<br/>  position = { line = 1<br/>               │
│ column = 0 }                                                                 │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbod...       │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 108.50ms - stdout ]────────────────────────────────────────────────────────╮
│ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])                       │
│ JObject                                                                      │
│       Item: FSharpMap<String,JValue>                                         │
│         - Key: a                                                             │
│           Value: JNumber                                                     │
│             Item: 1                                                          │
│             IsJString: False                                                 │
│             IsJNumber: True                                                  │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: b                                                             │
│           Value: JNumber                                                     │
│             Item: 2                                                          │
│             IsJString: False                                                 │
│             IsJNumber: True                                                  │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│       IsJString: False                                                       │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: True                                                        │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run jObject """{ "a":1, "b"  :  2, }"""
|> parserEqual (
    Failure (
        "object",
        "Unexpected ','",
        { currentLine = """{ "a":1, "b"  :  2, }"""; line = 0; column = 18 }
    )
)

╭─[ 26.21ms - return value ]───────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Failure (&quot;object&quot;, &quot;Unexpected    │
│ &#39;,&#39;&quot;, { currentLine = &quot;{ &quot;a&quot;:1, &quot;b&quot;  : │
│ 2, }&quot;<br/>                                       line = 0<br/>          │
│ column = 18                                                                  │
│ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><div                                                          │
│ class="dni-plaintext"><pre>object</pre></div></td></tr><tr><td>Item2</td><td │
│ ><div class="dni-plaintext"><pre>Unexpected                                  │
│ &#39;,&#39;</pre></div></td></tr><tr><td>Item3</td><td><details              │
│ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
│ currentLine = &quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2, }&quot;<br/>     │
│ lin...                                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 27.32ms - stdout ]─────────────────────────────────────────────────────────╮
│ Line:0 Col:18 Error parsing object                                           │
│ { "a":1, "b"  :  2, }                                                        │
│                   ^Unexpected ','                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### jValue                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example1 = """{
    "name" : "Scott",
    "isMale" : true,
    "bday" : {"year":2001, "month":12, "day":25 },
    "favouriteColors" : [["blue", "green"]],
    "emptyArray" : [[]],
    "emptyObject" : {}
}"""
run jValue example1
|> parserEqual (
    Success (
        JObject (
            Map.ofList [[
                "name", JString "Scott"
                "isMale", JBool true
                "bday", JObject (
                    Map.ofList [[
                        "year", JNumber 2001.0
                        "month", JNumber 12.0
                        "day", JNumber 25.0
                    ]]
                )
                "favouriteColors", JArray [[ JString "blue"; JString "green" ]]
                "emptyArray", JArray [[]]
                "emptyObject", JObject Map.empty
            ]]
        )
    )
)

╭─[ 112.75ms - return value ]──────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success<br/>  (JObject<br/>     (map<br/>        │
│ [(&quot;bday&quot;,<br/>          JObject<br/>            (map<br/>          │
│ [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br/>    │
│ (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray [     │
│ ]);<br/>         (&quot;emptyObject&quot;, JObject (map []));<br/>           │
│ (&quot;favouriteColors&quot;,                                                │
│ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
│ d>Item</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>(JObject<br/>  (map<br/>     [                   │
│ (&quot;bday&quot;,<br/>       JObject<br/>         (map<br/>            [    │
│ (...                                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 114.47ms - stdout ]────────────────────────────────────────────────────────╮
│ JObject                                                                      │
│   (map                                                                       │
│      [("bday",                                                               │
│        JObject                                                               │
│          (map                                                                │
│             [("day", JNumber 25.0); ("month", JNumber 12.0);                 │
│              ("year", JNumber 2001.0)])); ("emptyArray", JArray []);         │
│       ("emptyObject", JObject (map []));                                     │
│       ("favouriteColors", JArray [JString "blue"; JString "green"]);         │
│       ("isMale", JBool true); ("name", JString "Scott")])                    │
│ JObject                                                                      │
│       Item: FSharpMap<String,JValue>                                         │
│         - Key: bday                                                          │
│           Value: JObject                                                     │
│             Item: FSharpMap<String,JValue>                                   │
│               - Key: day                                                     │
│                 Value: JNumber 25.0                                          │
│               - Key: month                                                   │
│                 Value: JNumber 12.0                                          │
│               - Key: year                                                    │
│                 Value: JNumber 2001.0                                        │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: True                                                  │
│             IsJArray: False                                                  │
│         - Key: emptyArray                                                    │
│           Value: JArray                                                      │
│             Item: FSharpList<JValue>                                         │
│                                                                              │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: True                                                   │
│         - Key: emptyObject                                                   │
│           Value: JObject                                                     │
│             Item: FSharpMap<String,JValue>                                   │
│                                                                              │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: True                                                  │
│             IsJArray: False                                                  │
│         - Key: favouriteColors                                               │
│           Value: JArray                                                      │
│             Item: FSharpList<JValue>                                         │
│               - Item: blue                                                   │
│                 IsJString: True                                              │
│                 IsJNumber: False                                             │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: False                                              │
│               - Item: green                                                  │
│                 IsJString: True                                              │
│                 IsJNumber: False                                             │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: False                                              │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: True                                                   │
│         - Key: isMale                                                        │
│           Value: JBool                                                       │
│             Item: True                                                       │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: True                                                    │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: name                                                          │
│           Value: JString                                                     │
│             Item: Scott                                                      │
│             IsJString: True                                                  │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│       IsJString: False                                                       │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: True                                                        │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example2 = """{"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "width": 500,
        "height": 500
    },
    "image": {
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": "center"
    },
    "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}}"""

run jValue example2
|> parserEqual (
    Success (
        JObject (
            Map.ofList [[
                "widget", JObject (
                    Map.ofList [[
                        "debug", JString "on"
                        "window", JObject (
                            Map.ofList [[
                                "title", JString "Sample Konfabulator Widget"
                                "name", JString "main_window"
                                "width", JNumber 500.0
                                "height", JNumber 500.0
                            ]]
                        )
                        "image", JObject (
                            Map.ofList [[
                                "src", JString "Images/Sun.png"
                                "name", JString "sun1"
                                "hOffset", JNumber 250.0
                                "vOffset", JNumber 250.0
                                "alignment", JString "center"
                            ]]
                        )
                        "text", JObject (
                            Map.ofList [[
                                "data", JString "Click Here"
                                "size", JNumber 36.0
                                "style", JString "bold"
                                "name", JString "text1"
                                "hOffset", JNumber 250.0
                                "vOffset", JNumber 100.0
                                "alignment", JString "center"
                                "onMouseUp", JString "sun1.opacity = 
(sun1.opacity / 100) * 90;"
                            ]]
                        )
                    ]]
                )
            ]]
        )
    )
)

╭─[ 236.30ms - return value ]──────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success<br/>  (JObject<br/>     (map<br/>        │
│ [(&quot;widget&quot;,<br/>          JObject<br/>            (map<br/>        │
│ [(&quot;debug&quot;, JString &quot;on&quot;);<br/>                           │
│ (&quot;image&quot;,<br/>                 JObject<br/>                        │
│ (map<br/>                      [(&quot;alignment&quot;, JString              │
│ &quot;center&quot;);<br/>                                                    │
│ (&quot;hOffset&quot;...</code></span></summary><div><table><thead><tr></tr>< │
│ /thead><tbody><tr><td>Item</td><td><details                                  │
│ class="dni-treeview"><summary><span                                          │
│ class="dni-code-hint"><code>(JObject<br/>  (map<br/>     [                   │
│ (&quot;widget&quot;,<br/>       JObject<br/>         (map<br/>      ...      │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 237.74ms - stdout ]────────────────────────────────────────────────────────╮
│ JObject                                                                      │
│   (map                                                                       │
│      [("widget",                                                             │
│        JObject                                                               │
│          (map                                                                │
│             [("debug", JString "on");                                        │
│              ("image",                                                       │
│               JObject                                                        │
│                 (map                                                         │
│                    [("alignment", JString "center"); ("hOffset", JNumber     │
│ 250.0);                                                                      │
│                     ("name", JString "sun1"); ("src", JString                │
│ "Images/Sun.png");                                                           │
│                     ("vOffset", JNumber 250.0)]));                           │
│              ("text",                                                        │
│               JObject                                                        │
│                 (map                                                         │
│                    [("alignment", JString "center");                         │
│                     ("data", JString "Click Here"); ("hOffset", JNumber      │
│ 250.0);                                                                      │
│                     ("name", JString "text1");                               │
│                     ("onMouseUp",                                            │
│                      JString "sun1.opacity = (sun1.opacity / 100) * 90;");   │
│                     ("size", JNumber 36.0); ("style", JString "bold");       │
│                     ("vOffset", JNumber 100.0)]));                           │
│              ("window",                                                      │
│               JObject                                                        │
│                 (map                                                         │
│                    [("height", JNumber 500.0); ("name", JString              │
│ "main_window");                                                              │
│                     ("title", JString "Sample Konfabulator Widget");         │
│                     ("width", JNumber 500.0)]))]))])                         │
│ JObject                                                                      │
│       Item: FSharpMap<String,JValue>                                         │
│         - Key: widget                                                        │
│           Value: JObject                                                     │
│             Item: FSharpMap<String,JValue>                                   │
│               - Key: debug                                                   │
│                 Value: JString "on"                                          │
│               - Key: image                                                   │
│                 Value: JObject                                               │
│   (map                                                                       │
│      [("alignment", JString "center"); ("hOffset", JNumber 250.0);           │
│       ("name", JString "sun1"); ("src", JString "Images/Sun.png");           │
│       ("vOffset", JNumber 250.0)])                                           │
│               - Key: text                                                    │
│                 Value: JObject                                               │
│   (map                                                                       │
│      [("alignment", JString "center"); ("data", JString "Click Here");       │
│       ("hOffset", JNumber 250.0); ("name", JString "text1");                 │
│       ("onMouseUp", JString "sun1.opacity = (sun1.opacity / 100) * 90;");    │
│       ("size", JNumber 36.0); ("style", JString "bold");                     │
│       ("vOffset", JNumber 100.0)])                                           │
│               - Key: window                                                  │
│                 Value: JObject                                               │
│   (map                                                                       │
│      [("height", JNumber 500.0); ("name", JString "main_window");            │
│       ("title", JString "Sample Konfabulator Widget"); ("width", JNumber     │
│ 500.0)])                                                                     │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: True                                                  │
│             IsJArray: False                                                  │
│       IsJString: False                                                       │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: True                                                        │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example3 = """{
  "string": "Hello, \"World\"!",
  "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'",
  "number": 42,
  "scientificNumber": 3.14e-10,
  "boolean": true,
  "nullValue": null,
  "array": [[1, 2, 3, 4, 5]],
  "unicodeString1": "프리마",
  "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, 
\u0022\u0057\u006F\u0072\u006C\u0064\u0022!",
  "specialCharacters": "!@#$%^&*()",
  "emptyArray": [[]],
  "emptyObject": {},
  "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]],
  "object": {
    "nestedString": "Nested Value",
    "nestedNumber": 3.14,
    "nestedBoolean": false,
    "nestedNull": null,
    "nestedArray": [["a", "b", "c"]],
    "nestedObject": {
      "nestedProperty": "Nested Object Value"
    }
  },
  "nestedObjects": [[
    {"name": "Alice", "age": 25},
    {"name": "Bob", "age": 30}
  ]]
}"""
run jValue example3
|> parserEqual (
    Success (
        JObject (
            Map.ofList [[
                "string", JString @"Hello, ""World""!"
                "escapedString", JString @"This string contains 
\/\\\b\f\n\r\t\""\'"
                "number", JNumber 42.0
                "scientificNumber", JNumber 3.14e-10
                "boolean", JBool true
                "nullValue", JNull
                "array", JArray [[
                    JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 
5.0
                ]]
                "unicodeString1", JString "프리마"
                "unicodeString2", JString @"Hello, ""World""!"
                "specialCharacters", JString "!@#$%^&*()"
                "emptyArray", JArray [[]]
                "emptyObject", JObject Map.empty
                "nestedArrays", JArray [[
                    JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]]
                    JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]]
                ]]
                "object", JObject (
                    Map.ofList [[
                        "nestedString", JString "Nested Value"
                        "nestedNumber", JNumber 3.14
                        "nestedBoolean", JBool false
                        "nestedNull", JNull
                        "nestedArray", JArray [[JString "a"; JString "b"; 
JString "c"]]
                        "nestedObject", JObject (
                            Map.ofList [[
                                "nestedProperty", JString "Nested Object Value"
                            ]]
                        )
                    ]]
                )
                "nestedObjects", JArray [[
                  JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber
25.0 ]])
                  JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber 
30.0 ]])
                ]]
            ]]
        )
    )
)

╭─[ 320.07ms - return value ]──────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Success<br/>  (JObject<br/>     (map<br/>        │
│ [(&quot;array&quot;,<br/>          JArray<br/>            [JNumber 1.0;      │
│ JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br/>                   │
│ (&quot;boolean&quot;, JBool true); (&quot;emptyArray&quot;, JArray []);<br/> │
│ (&quot;emptyObject&quot;, JObject (map []));<br/>                            │
│ (&quot;escapedString&quot;, JString &quot;This                               │
│ s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │
│ td>Item</td><td><details class="dni-treeview"><summary><span                 │
│ class="dni-code-hint"><code>(JObject<br/>  (map<br/>     [                   │
│ (&quot;array&quot;,<br/>       JArray [JNumber 1.0; JNumber 2.0; JNumber     │
│ 3.0; JNumber 4.0; J...                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 323.01ms - stdout ]────────────────────────────────────────────────────────╮
│ JObject                                                                      │
│   (map                                                                       │
│      [("array",                                                              │
│        JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber   │
│ 5.0]);                                                                       │
│       ("boolean", JBool true); ("emptyArray", JArray []);                    │
│       ("emptyObject", JObject (map []));                                     │
│       ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'");  │
│       ("nestedArrays",                                                       │
│        JArray                                                                │
│          [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0];                    │
│           JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]);                  │
│       ("nestedObjects",                                                      │
│        JArray                                                                │
│          [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]);  │
│           JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]);  │
│       ("nullValue", JNull); ("number", JNumber 42.0); ...])                  │
│ JObject                                                                      │
│       Item: FSharpMap<String,JValue>                                         │
│         - Key: array                                                         │
│           Value: JArray                                                      │
│             Item: FSharpList<JValue>                                         │
│               - Item: 1                                                      │
│                 IsJString: False                                             │
│                 IsJNumber: True                                              │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: False                                              │
│               - Item: 2                                                      │
│                 IsJString: False                                             │
│                 IsJNumber: True                                              │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: False                                              │
│               - Item: 3                                                      │
│                 IsJString: False                                             │
│                 IsJNumber: True                                              │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: False                                              │
│               - Item: 4                                                      │
│                 IsJString: False                                             │
│                 IsJNumber: True                                              │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: False                                              │
│               - Item: 5                                                      │
│                 IsJString: False                                             │
│                 IsJNumber: True                                              │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: False                                              │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: True                                                   │
│         - Key: boolean                                                       │
│           Value: JBool                                                       │
│             Item: True                                                       │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: True                                                    │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: emptyArray                                                    │
│           Value: JArray                                                      │
│             Item: FSharpList<JValue>                                         │
│                                                                              │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: True                                                   │
│         - Key: emptyObject                                                   │
│           Value: JObject                                                     │
│             Item: FSharpMap<String,JValue>                                   │
│                                                                              │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: True                                                  │
│             IsJArray: False                                                  │
│         - Key: escapedString                                                 │
│           Value: JString                                                     │
│             Item: This string contains \/\\\b\f\n\r\t\"\'                    │
│             IsJString: True                                                  │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: nestedArrays                                                  │
│           Value: JArray                                                      │
│             Item: FSharpList<JValue>                                         │
│               - Item: [ JNumber 1.0, JNumber 2.0, JNumber 3.0 ]              │
│                 IsJString: False                                             │
│                 IsJNumber: False                                             │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: True                                               │
│               - Item: [ JNumber 4.0, JNumber 5.0, JNumber 6.0 ]              │
│                 IsJString: False                                             │
│                 IsJNumber: False                                             │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: False                                             │
│                 IsJArray: True                                               │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: True                                                   │
│         - Key: nestedObjects                                                 │
│           Value: JArray                                                      │
│             Item: FSharpList<JValue>                                         │
│               - Item: [ [age, JNumber 25.0], [name, JString "Alice"] ]       │
│                 IsJString: False                                             │
│                 IsJNumber: False                                             │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: True                                              │
│                 IsJArray: False                                              │
│               - Item: [ [age, JNumber 30.0], [name, JString "Bob"] ]         │
│                 IsJString: False                                             │
│                 IsJNumber: False                                             │
│                 IsJBool: False                                               │
│                 IsJNull: False                                               │
│                 IsJObject: True                                              │
│                 IsJArray: False                                              │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: True                                                   │
│         - Key: nullValue                                                     │
│           Value: JValue                                                      │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: True                                                    │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: number                                                        │
│           Value: JNumber                                                     │
│             Item: 42                                                         │
│             IsJString: False                                                 │
│             IsJNumber: True                                                  │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: object                                                        │
│           Value: JObject                                                     │
│             Item: FSharpMap<String,JValue>                                   │
│               - Key: nestedArray                                             │
│                 Value: JArray [JString "a"; JString "b"; JString "c"]        │
│               - Key: nestedBoolean                                           │
│                 Value: JBool false                                           │
│               - Key: nestedNull                                              │
│                 Value: JNull                                                 │
│               - Key: nestedNumber                                            │
│                 Value: JNumber 3.14                                          │
│               - Key: nestedObject                                            │
│                 Value: JObject (map [("nestedProperty", JString "Nested      │
│ Object Value")])                                                             │
│               - Key: nestedString                                            │
│                 Value: JString "Nested Value"                                │
│             IsJString: False                                                 │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: True                                                  │
│             IsJArray: False                                                  │
│         - Key: scientificNumber                                              │
│           Value: JNumber                                                     │
│             Item: 3.14E-10                                                   │
│             IsJString: False                                                 │
│             IsJNumber: True                                                  │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: specialCharacters                                             │
│           Value: JString                                                     │
│             Item: !@#$%^&*()                                                 │
│             IsJString: True                                                  │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: string                                                        │
│           Value: JString                                                     │
│             Item: Hello, "World"!                                            │
│             IsJString: True                                                  │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: unicodeString1                                                │
│           Value: JString                                                     │
│             Item: 프리마                                                     │
│             IsJString: True                                                  │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│         - Key: unicodeString2                                                │
│           Value: JString                                                     │
│             Item: Hello, "World"!                                            │
│             IsJString: True                                                  │
│             IsJNumber: False                                                 │
│             IsJBool: False                                                   │
│             IsJNull: False                                                   │
│             IsJObject: False                                                 │
│             IsJArray: False                                                  │
│       IsJString: False                                                       │
│       IsJNumber: False                                                       │
│       IsJBool: False                                                         │
│       IsJNull: False                                                         │
│       IsJObject: True                                                        │
│       IsJArray: False                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook JsonParser.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 543698 bytes to JsonParser.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Parser (Polyglot)                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### TextInput                                                                │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Position =
    {
        line : int
        column : int
    }

── fsharp ──────────────────────────────────────────────────────────────────────
let initialPos = { line = 0; column = 0 }

── fsharp ──────────────────────────────────────────────────────────────────────
let inline incrCol (pos : Position) =
    { pos with column = pos.column + 1 }

── fsharp ──────────────────────────────────────────────────────────────────────
let inline incrLine pos =
    { line = pos.line + 1; column = 0 }

── fsharp ──────────────────────────────────────────────────────────────────────
type InputState =
    {
        lines : string[[]]
        position : Position
    }

── fsharp ──────────────────────────────────────────────────────────────────────
let inline fromStr str =
    {
        lines =
            if str |> String.IsNullOrEmpty
            then [[||]]
            else str |> String.splitString [[| "\r\n"; "\n" |]]
        position = initialPos
    }

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

fromStr "" |> _equal {
    lines = [[||]]
    position = { line = 0; column = 0 }
}

╭─[ 33.89ms - stdout ]─────────────────────────────────────────────────────────╮
│ InputState                                                                   │
│       lines: [  ]                                                            │
│       position: Position                                                     │
│         line: 0                                                              │
│         column: 0                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

fromStr "Hello \n World" |> _equal {
    lines = [[| "Hello "; " World" |]]
    position = { line = 0; column = 0 }
}

╭─[ 10.49ms - stdout ]─────────────────────────────────────────────────────────╮
│ InputState                                                                   │
│       lines: [ Hello ,  World ]                                              │
│       position: Position                                                     │
│         line: 0                                                              │
│         column: 0                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline currentLine inputState =
    let linePos = inputState.position.line
    if linePos < inputState.lines.Length
    then inputState.lines.[[linePos]]
    else "end of file"

── fsharp ──────────────────────────────────────────────────────────────────────
let inline nextChar input =
    let linePos = input.position.line
    let colPos = input.position.column

    if linePos >= input.lines.Length
    then input, None
    else
        let currentLine = currentLine input
        if colPos < currentLine.Length then
            let char = currentLine.[[colPos]]
            let newPos = incrCol input.position
            let newState = { input with position = newPos }
            newState, Some char
        else
            let char = '\n'
            let newPos = incrLine input.position
            let newState = { input with position = newPos }
            newState, Some char

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let newInput, charOpt = fromStr "Hello World" |> nextChar

newInput |> _equal {
    lines = [[| "Hello World" |]]
    position = { line = 0; column = 1 }
}
charOpt |> _equal (Some 'H')

╭─[ 25.58ms - stdout ]─────────────────────────────────────────────────────────╮
│ InputState                                                                   │
│       lines: [ Hello World ]                                                 │
│       position: Position                                                     │
│         line: 0                                                              │
│         column: 1                                                            │
│ FSharpOption<Char>                                                           │
│       Value: H                                                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar

newInput |> _equal {
    lines = [[| "Hello"; ""; "World" |]]
    position = { line = 0; column = 1 }
}
charOpt |> _equal (Some 'H')

╭─[ 18.48ms - stdout ]─────────────────────────────────────────────────────────╮
│ InputState                                                                   │
│       lines: [ Hello, , World ]                                              │
│       position: Position                                                     │
│         line: 0                                                              │
│         column: 1                                                            │
│ FSharpOption<Char>                                                           │
│       Value: H                                                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### Parser                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Input = InputState
type ParserLabel = string
type ParserError = string

type ParserPosition =
    {
        currentLine : string
        line : int
        column : int
    }

type ParseResult<'a> =
    | Success of 'a
    | Failure of ParserLabel * ParserError * ParserPosition

type Parser<'a> =
    {
        label : ParserLabel
        parseFn : Input -> ParseResult<'a * Input>
    }

── fsharp ──────────────────────────────────────────────────────────────────────
let inline printResult result =
    match result with
    | Success (value, input) ->
        printfn $"%A{value}"
    | Failure (label, error, parserPos) ->
        let errorLine = parserPos.currentLine
        let colPos = parserPos.column
        let linePos = parserPos.line
        let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}"
        printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing 
%s{label}\n%s{errorLine}\n%s{failureCaret}"

── fsharp ──────────────────────────────────────────────────────────────────────
let inline runOnInput parser input =
    parser.parseFn input

── fsharp ──────────────────────────────────────────────────────────────────────
let inline run parser inputStr =
    runOnInput parser (fromStr inputStr)

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parserPositionFromInputState (inputState : Input) =
    {
        currentLine = currentLine inputState
        line = inputState.position.line
        column = inputState.position.column
    }

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getLabel parser =
    parser.label

── fsharp ──────────────────────────────────────────────────────────────────────
let inline setLabel parser newLabel =
    {
        label = newLabel
        parseFn = fun input ->
            match parser.parseFn input with
            | Success s -> Success s
            | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos)
    }

── fsharp ──────────────────────────────────────────────────────────────────────
let (<?>) = setLabel

── fsharp ──────────────────────────────────────────────────────────────────────
let inline satisfy predicate label =
    {
        label = label
        parseFn = fun input ->
            let remainingInput, charOpt = nextChar input
            match charOpt with
            | None ->
                let err = "No more input"
                let pos = parserPositionFromInputState input
                Failure (label, err, pos)
            | Some first ->
                if predicate first
                then Success (first, remainingInput)
                else
                    let err = $"Unexpected '%c{first}'"
                    let pos = parserPositionFromInputState input
                    Failure (label, err, pos)
    }

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = satisfy (fun c -> c = 'H') "H"
runOnInput parser input |> _equal (
    Success (
        'H',
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 1 }
        }
    )
)

╭─[ 23.02ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - H                                                        │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 1                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "World"
let parser = satisfy (fun c -> c = 'H') "H"
runOnInput parser input |> _equal (
    Failure (
        "H",
        "Unexpected 'W'",
        {
            currentLine = "World"
            line = 0
            column = 0
        }
    )
)

╭─[ 21.08ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure                                                                      │
│       Item1: H                                                               │
│       Item2: Unexpected 'W'                                                  │
│       Item3: ParserPosition                                                  │
│         currentLine: World                                                   │
│         line: 0                                                              │
│         column: 0                                                            │
│       IsSuccess: False                                                       │
│       IsFailure: True                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline bindP f p =
    {
        label = "unknown"
        parseFn = fun input ->
            match runOnInput p input with
            | Failure (label, err, pos) -> Failure (label, err, pos)
            | Success (value1, remainingInput) -> runOnInput (f value1) 
remainingInput
    }

── fsharp ──────────────────────────────────────────────────────────────────────
let inline (>>=) p f = bindP f p

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
runOnInput parser2 input |> _equal (
    Success (
        'e',
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 2 }
        }
    )
)

╭─[ 26.07ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - e                                                        │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 2                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "World"
let parser = satisfy (fun c -> c = 'W') "W"
let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
runOnInput parser2 input |> _equal (
    Failure (
        "e",
        "Unexpected 'o'",
        {
            currentLine = "World"
            line = 0
            column = 1
        }
    )
)

╭─[ 25.80ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure                                                                      │
│       Item1: e                                                               │
│       Item2: Unexpected 'o'                                                  │
│       Item3: ParserPosition                                                  │
│         currentLine: World                                                   │
│         line: 0                                                              │
│         column: 1                                                            │
│       IsSuccess: False                                                       │
│       IsFailure: True                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline returnP x =
    {
        label = $"%A{x}"
        parseFn = fun input -> Success (x, input)
    }

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = returnP "Hello"
runOnInput parser input |> _equal (
    Success (
        "Hello",
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 0 }
        }
    )
)

╭─[ 22.51ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - Hello                                                    │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 0                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline mapP f =
    bindP (f >> returnP)

── fsharp ──────────────────────────────────────────────────────────────────────
let (<!>) = mapP

── fsharp ──────────────────────────────────────────────────────────────────────
let inline (|>>) x f = f <!> x

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = parser |>> string
runOnInput parser2 input |> _equal (
    Success (
        "H",
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 1 }
        }
    )
)

╭─[ 21.98ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - H                                                        │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 1                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline applyP fP xP =
    fP >>=
        fun f ->
            xP >>=
                fun x ->
                    returnP (f x)

── fsharp ──────────────────────────────────────────────────────────────────────
let (<*>) = applyP

── fsharp ──────────────────────────────────────────────────────────────────────
let inline lift2 f xP yP =
    returnP f <*> xP <*> yP

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = satisfy (fun c -> c = 'e') "e"
let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2
runOnInput parser3 input |> _equal (
    Success (
        "He",
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 2 }
        }
    )
)

╭─[ 37.04ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - He                                                       │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 2                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline andThen p1 p2 =
    p1 >>=
        fun p1Result ->
            p2 >>=
                fun p2Result ->
                    returnP (p1Result, p2Result)
    <?> $"{getLabel p1} andThen {getLabel p2}"

── fsharp ──────────────────────────────────────────────────────────────────────
let (.>>.) = andThen

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = satisfy (fun c -> c = 'e') "e"
let parser3 = parser .>>. parser2
runOnInput parser3 input |> _equal (
    Success (
        ('H', 'e'),
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 2 }
        }
    )
)

╭─[ 44.26ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - ( H, e )                                                 │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 2                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline orElse p1 p2 =
    {
        label = $"{getLabel p1} orElse {getLabel p2}"
        parseFn = fun input ->
            match runOnInput p1 input with
            | Success _ as result -> result
            | Failure _ -> runOnInput p2 input
    }

── fsharp ──────────────────────────────────────────────────────────────────────
let (<|>) = orElse

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = satisfy (fun c -> c = 'h') "h"
let parser3 = parser <|> parser2
runOnInput parser3 input |> _equal (
    Success (
        'h',
        {
            lines = [[| "hello" |]]
            position = { line = 0; column = 1 }
        }
    )
)

╭─[ 23.75ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - h                                                        │
│       - InputState                                                           │
│           lines: [ hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 1                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline choice listOfParsers =
    listOfParsers |> List.reduce (<|>)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = satisfy (fun c -> c = 'h') "h"
let parser3 = choice [[ parser; parser2 ]]
runOnInput parser3 input |> _equal (
    Success (
        'h',
        {
            lines = [[| "hello" |]]
            position = { line = 0; column = 1 }
        }
    )
)

╭─[ 23.81ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - h                                                        │
│       - InputState                                                           │
│           lines: [ hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 1                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let rec sequence parserList =
    match parserList with
    | [[]] -> returnP [[]]
    | head :: tail -> (lift2 cons) head (sequence tail)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = satisfy (fun c -> c = 'e') "e"
let parser3 = sequence [[ parser; parser2 ]]
runOnInput parser3 input |> _equal (
    Success (
        [[ 'H'; 'e' ]],
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 2 }
        }
    )
)

╭─[ 40.54ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - [ H, e ]                                                 │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 2                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let rec parseZeroOrMore parser input =
    match runOnInput parser input with
    | Failure (_, _, _) ->
        [[]], input
    | Success (firstValue, inputAfterFirstParse) ->
        let subsequentValues, remainingInput = parseZeroOrMore parser 
inputAfterFirstParse
        firstValue :: subsequentValues, remainingInput

── fsharp ──────────────────────────────────────────────────────────────────────
let inline many parser =
    {
        label = $"many {getLabel parser}"
        parseFn = fun input -> Success (parseZeroOrMore parser input)
    }

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = many parser
runOnInput parser2 input |> _equal (
    Success (
        [[]],
        {
            lines = [[| "hello" |]]
            position = { line = 0; column = 0 }
        }
    )
)

╭─[ 20.15ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - [  ]                                                     │
│       - InputState                                                           │
│           lines: [ hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 0                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline many1 p =
    p >>=
        fun head ->
            many p >>=
                fun tail ->
                    returnP (head :: tail)
    <?> $"many1 {getLabel p}"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = many1 parser
runOnInput parser2 input |> _equal (
    Failure (
        "many1 H",
        "Unexpected 'h'",
        {
            currentLine = "hello"
            line = 0
            column = 0
        }
    )
)

╭─[ 29.59ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure                                                                      │
│       Item1: many1 H                                                         │
│       Item2: Unexpected 'h'                                                  │
│       Item3: ParserPosition                                                  │
│         currentLine: hello                                                   │
│         line: 0                                                              │
│         column: 0                                                            │
│       IsSuccess: False                                                       │
│       IsFailure: True                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline opt p =
    let some = p |>> Some
    let none = returnP None
    (some <|> none)
    <?> $"opt {getLabel p}"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "hello"
let parser = satisfy (fun c -> c = 'H') "H"
let parser2 = opt parser
runOnInput parser2 input |> _equal (
    Success (
        None,
        {
            lines = [[| "hello" |]]
            position = { line = 0; column = 0 }
        }
    )
)

╭─[ 26.89ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - <null>                                                   │
│       - InputState                                                           │
│           lines: [ hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 0                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline (.>>) p1 p2 =
    p1 .>>. p2
    |> mapP fst

── fsharp ──────────────────────────────────────────────────────────────────────
let inline (>>.) p1 p2 =
    p1 .>>. p2
    |> mapP snd

── fsharp ──────────────────────────────────────────────────────────────────────
let inline between p1 p2 p3 =
    p1 >>. p2 .>> p3

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "[[Hello]]"
let parser =
    between
        (satisfy (fun c -> c = '[[') "[[")
        (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> 
List.contains c) "letter"))
        (satisfy (fun c -> c = ']]') "]]")
runOnInput parser input |> _equal (
    Success (
        [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
        {
            lines = [[| "[[Hello]]" |]]
            position = { line = 0; column = 7 }
        }
    )
)

╭─[ 76.80ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - [ H, e, l, l, o ]                                        │
│       - InputState                                                           │
│           lines: [ [Hello] ]                                                 │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 7                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline sepBy1 p sep =
    let sepThenP = sep >>. p
    p .>>. many sepThenP
    |>> fun (p, pList) -> p :: pList

── fsharp ──────────────────────────────────────────────────────────────────────
let inline sepBy p sep =
    sepBy1 p sep <|> returnP [[]]

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello,World"
let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy 
(fun c -> c = ',') "comma")
runOnInput parser input |> _equal (
    Success (
        [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] 
]],
        {
            lines = [[| "Hello,World" |]]
            position = { line = 1; column = 0 }
        }
    )
)

╭─[ 55.59ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - FSharpList<FSharpList<Char>>                             │
│ [ H, e, l, l, o ]                                                            │
│ [ W, o, r, l, d,                                                             │
│  ]                                                                           │
│       - InputState                                                           │
│           lines: [ Hello,World ]                                             │
│           position: Position                                                 │
│             line: 1                                                          │
│             column: 0                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline pchar charToMatch =
    satisfy ((=) charToMatch) $"%c{charToMatch}"

── fsharp ──────────────────────────────────────────────────────────────────────
let inline anyOf listOfChars =
    listOfChars
    |> List.map pchar
    |> choice
    <?> $"anyOf %A{listOfChars}"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many
runOnInput parser input |> _equal (
    Success (
        [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 5 }
        }
    )
)

╭─[ 26.52ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - [ H, e, l, l, o ]                                        │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 5                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline charListToStr charList =
    charList |> List.toArray |> String

── fsharp ──────────────────────────────────────────────────────────────────────
let inline manyChars cp =
    many cp
    |>> charListToStr

── fsharp ──────────────────────────────────────────────────────────────────────
let inline manyChars1 cp =
    many1 cp
    |>> charListToStr

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]])
runOnInput parser input |> _equal (
    Success (
        "Hello",
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 5 }
        }
    )
)

╭─[ 35.35ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - Hello                                                    │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 5                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline pstring str =
    str
    |> List.ofSeq
    |> List.map pchar
    |> sequence
    |> mapP charListToStr
    <?> str

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = pstring "Hello"
runOnInput parser input |> _equal (
    Success (
        "Hello",
        {
            lines = [[| "Hello" |]]
            position = { line = 0; column = 5 }
        }
    )
)

╭─[ 29.59ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - Hello                                                    │
│       - InputState                                                           │
│           lines: [ Hello ]                                                   │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 5                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let whitespaceChar =
    satisfy Char.IsWhiteSpace "whitespace"

── fsharp ──────────────────────────────────────────────────────────────────────
let spaces = many whitespaceChar

── fsharp ──────────────────────────────────────────────────────────────────────
let spaces1 = many1 whitespaceChar

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "  Hello"
let parser = spaces1 .>>. pstring "Hello"
runOnInput parser input |> _equal (
    Success (
        ([[ ' '; ' ' ]], "Hello"),
        {
            lines = [[| "  Hello" |]]
            position = { line = 0; column = 7 }
        }
    )
)

╭─[ 36.44ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       -         - [  ,   ]                                       │
│         - Hello                                                              │
│       - InputState                                                           │
│           lines: [   Hello ]                                                 │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 7                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let digitChar =
    satisfy Char.IsDigit "digit"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let input = fromStr "Hello"
let parser = digitChar
runOnInput parser input |> _equal (
    Failure (
        "digit",
        "Unexpected 'H'",
        {
            currentLine = "Hello"
            line = 0
            column = 0
        }
    )
)

╭─[ 12.02ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure                                                                      │
│       Item1: digit                                                           │
│       Item2: Unexpected 'H'                                                  │
│       Item3: ParserPosition                                                  │
│         currentLine: Hello                                                   │
│         line: 0                                                              │
│         column: 0                                                            │
│       IsSuccess: False                                                       │
│       IsFailure: True                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let pint =
    let inline resultToInt (sign, digits) =
        let i = int digits
        match sign with
        | Some ch -> -i
        | None -> i

    let digits = manyChars1 digitChar

    opt (pchar '-') .>>. digits
    |> mapP resultToInt
    <?> "integer"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run pint "-123"
|> _equal (
    Success (
        -123,
        {
            lines = [[| "-123" |]]
            position = { line = 0; column = 4 }
        }
    )
)

╭─[ 23.01ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - -123                                                     │
│       - InputState                                                           │
│           lines: [ -123 ]                                                    │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 4                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let pfloat =
    let inline resultToFloat (((sign, digits1), point), digits2) =
        let fl = float $"{digits1}.{digits2}"
        match sign with
        | Some ch -> -fl
        | None -> fl

    let digits = manyChars1 digitChar

    opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits
    |> mapP resultToFloat
    <?> "float"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

run pfloat "-123.45"
|> _equal (
    Success (
        -123.45,
        {
            lines = [[| "-123.45" |]]
            position = { line = 0; column = 7 }
        }
    )
)

╭─[ 27.25ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success                                                                      │
│       Item:       - -123.45                                                  │
│       - InputState                                                           │
│           lines: [ -123.45 ]                                                 │
│           position: Position                                                 │
│             line: 0                                                          │
│             column: 7                                                        │
│     - IsSuccess: True                                                        │
│       IsFailure: False                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline createParserForwardedToRef<'a> () =
    let mutable parserRef : Parser<'a> =
        {
            label = "unknown"
            parseFn = fun _ -> failwith "unfixed forwarded parser"
        }

    let wrapperParser =
        { parserRef with
            parseFn = fun input -> runOnInput parserRef input
        }

    wrapperParser, (fun v -> parserRef <- v)

── fsharp ──────────────────────────────────────────────────────────────────────
let inline (>>%) p x =
    p
    |>> fun _ -> x
[NbConvertApp] Converting notebook Parser.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 414862 bytes to Parser.dib.html
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Parser.dib
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: JsonParser.dib
00:00:00 #3 [Debug] parseDibCode / output: Fs / file: Parser.dib
00:00:00 #3 [Debug] parseDibCode / output: Fs / file: JsonParser.dib
In [ ]:
{ . "$ScriptDir/../lib/fsharp/build.ps1" } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Async (Polyglot)                                                           │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## choice                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline choice asyncs = async {
    let e = Event<_> ()
    use cts = new System.Threading.CancellationTokenSource ()
    let fn =
        asyncs
        |> Seq.map (fun a -> async {
            let! x = a
            e.Trigger x
        })
        |> Async.Parallel
        |> Async.Ignore
    Async.Start (fn, cts.Token)
    let! result = Async.AwaitEvent e.Publish
    cts.Cancel ()
    return result
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## map                                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline map fn a = async {
    let! x = a
    return fn x
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## catch                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline catch a =
    a
    |> Async.Catch
    |> map (function
        | Choice1Of2 result -> Ok result
        | Choice2Of2 ex -> Error ex
    )

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## runWithTimeoutAsync                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline runWithTimeoutAsync (timeout : int) fn =
    let getLocals () = $"timeout: {timeout} / {getLocals ()}"

    let timeoutTask = async {
        do! Async.Sleep timeout
        trace Debug (fun () -> "runWithTimeoutAsync") getLocals
        return None
    }

    let task = async {
        try
            let! result = fn
            return Some result
        with
        | :? System.AggregateException as ex when
            ex.InnerExceptions
            |> Seq.exists (function :? 
System.Threading.Tasks.TaskCanceledException -> true | _ -> false)
            ->
            let getLocals () = $"ex: {ex |> printException} / {getLocals ()}"
            trace Warning (fun () -> "runWithTimeoutAsync") getLocals
            return None
        | ex ->
            trace Critical (fun () -> $"runWithTimeoutAsync** / ex: {ex |> 
printException}") getLocals
            return None
    }

    [[ timeoutTask; task ]]
    |> choice

── fsharp ──────────────────────────────────────────────────────────────────────
let inline runWithTimeout timeout fn =
    fn
    |> runWithTimeoutAsync timeout
    |> Async.RunSynchronously

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Async.Sleep 60
|> runWithTimeout 10
|> _equal None

╭─[ 175.22ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Debug] runWithTimeoutAsync / timeout: 10                        │
│ <null>                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Async.Sleep 10
|> runWithTimeout 60
|> _equal (Some ())

╭─[ 73.40ms - stdout ]─────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

async {
    raise (exn "error")
}
|> runWithTimeout 60
|> _equal None

╭─[ 67.98ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #2 [Critical] runWithTimeoutAsync** / ex: System.Exception: error / │
│ timeout: 60                                                                  │
│ <null>                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## runWithTimeoutChildAsync                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline runWithTimeoutChildAsync (timeout : int) fn = async {
    let getLocals () = $"timeout: {timeout} / {getLocals ()}"
    let! child = Async.StartChild (fn, timeout)
    return!
        child
        |> catch
        |> map (function
            | Ok result -> Some result
            | Error (:? System.TimeoutException as ex) ->
                trace Debug (fun () -> $"runWithTimeoutChildAsync") getLocals
                None
            | Error ex ->
                trace Critical (fun () -> $"runWithTimeoutChildAsync** / ex: {ex
|> printException}") getLocals
                None
        )
}

── fsharp ──────────────────────────────────────────────────────────────────────
let inline runWithTimeoutChild timeout fn =
    fn
    |> runWithTimeoutChildAsync timeout
    |> Async.RunSynchronously

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Async.Sleep 60
|> runWithTimeoutChild 10
|> _equal None

╭─[ 63.84ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #3 [Debug] runWithTimeoutChildAsync / timeout: 10                   │
│ <null>                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Async.Sleep 10
|> runWithTimeoutChild 60
|> _equal (Some ())

╭─[ 51.44ms - stdout ]─────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

async {
    raise (exn "error")
}
|> runWithTimeoutChild 60
|> _equal None

╭─[ 49.58ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #4 [Critical] runWithTimeoutChildAsync** / ex: System.Exception:    │
│ error / timeout: 60                                                          │
│ <null>                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## runWithTimeoutStrict                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline runWithTimeoutStrict (timeout : int) fn =
    let getLocals () = $"timeout: {timeout} / {getLocals ()}"

    let timeoutTask = async {
        do! Async.Sleep timeout
        return None, getLocals
    }
    
    let task = async {
        try
            return Async.RunSynchronously (fn, timeout) |> Some, getLocals
        with
        | :? System.TimeoutException as ex ->
            let getLocals () = $"ex: {ex |> printException} / {getLocals ()}"
            return None, getLocals
        | ex ->
            trace Critical (fun () -> $"runWithTimeoutStrict / ex: {ex |> 
printException}") getLocals
            return raise ex
    }

    try
        [[| timeoutTask; task |]]
        |> Array.map Async.StartAsTask
        |> System.Threading.Tasks.Task.WhenAny
        |> fun task ->
            match task.Result.Result with
            | None, getLocals ->
                trace Debug (fun () -> "runWithTimeoutStrict") getLocals
                None
            | result, _ -> result
    with
    | :? System.AggregateException as ex when
        ex.InnerExceptions
        |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException 
-> true | _ -> false)
        ->
        let getLocals () = $"ex: {ex |> printException} / {getLocals ()}"
        trace Warning (fun () -> "runWithTimeoutStrict") getLocals
        None
    | ex ->
        let getLocals () = $"ex: {ex |> printException} / {getLocals ()}"
        trace Critical (fun () -> "runWithTimeoutStrict**") getLocals
        None

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Async.Sleep 60
|> runWithTimeoutStrict 10
|> _equal None

╭─[ 73.31ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #5 [Debug] runWithTimeoutStrict / timeout: 10                       │
│ <null>                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Async.Sleep 10
|> runWithTimeoutStrict 60
|> _equal (Some ())

╭─[ 92.79ms - stdout ]─────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

async {
    raise (exn "error")
}
|> runWithTimeoutStrict 60
|> _equal None

╭─[ 66.04ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #6 [Critical] runWithTimeoutStrict / ex: System.Exception: error /  │
│ timeout: 60                                                                  │
│ 00:00:00 #7 [Critical] runWithTimeoutStrict** / ex:                          │
│ System.AggregateException: One or more errors occurred. (error) / timeout:   │
│ 60                                                                           │
│ <null>                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## awaitValueTask                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline awaitValueTaskUnit (task : System.Threading.Tasks.ValueTask) =
    task.AsTask () |> Async.AwaitTask

let inline awaitValueTask (task : System.Threading.Tasks.ValueTask<_>) =
    task.AsTask () |> Async.AwaitTask

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## init                                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline init x = async {
    return x
}

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

init 1
|> Async.RunSynchronously
|> _equal 1

╭─[ 16.42ms - stdout ]─────────────────────────────────────────────────────────╮
│ 1                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## mergeCancellationTokenWithDefaultAsync                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline mergeCancellationTokenWithDefaultAsync (token : 
System.Threading.CancellationToken) = async {
    let! ct = Async.CancellationToken
    let dct = Async.DefaultCancellationToken
    let cts = System.Threading.CancellationTokenSource.CreateLinkedTokenSource 
[[| ct; dct; token |]]
    return cts.Token
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## withCancellationToken                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline withCancellationToken (ct : System.Threading.CancellationToken) fn =
    Async.StartImmediateAsTask (fn, ct)
    |> Async.AwaitTask

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let cts = new System.Threading.CancellationTokenSource ()

async {
    let run = async {
        do! Async.Sleep 100
        return 1
    }

    let! child =
        run
        |> withCancellationToken cts.Token
        |> catch
        |> Async.StartChild

    do! Async.Sleep 50
    cts.Cancel ()
    return! child
}
|> Async.RunSynchronously
|> Result.mapError (fun x -> x.Message)
|> _equal (Error ("A task was canceled."))

╭─[ 134.48ms - stdout ]────────────────────────────────────────────────────────╮
│ FSharpResult<Int32,String>                                                   │
│       ResultValue: 0                                                         │
│       ErrorValue: A task was canceled.                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## withTraceLevel                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline withTraceLevel level fn = async {
    let oldTraceLevel = traceLevel
    try
        traceLevel <- level
        return! fn
    finally
        traceLevel <- oldTraceLevel
}
[NbConvertApp] Converting notebook Async.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 324750 bytes to Async.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # AsyncSeq (Polyglot)                                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/Async.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## subscribeEvent                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline subscribeEvent (event: IEvent<'H, 'A>) map =
    let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 
'A>(event.AddHandler, event.RemoveHandler)
    System.Reactive.Linq.Observable.Select (observable, fun event -> map 
event.EventArgs)
    |> FSharp.Control.AsyncSeq.ofObservableBuffered

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

type TestEvent () as self =
    member val Calls = [[]] with get, set
    member val Event = Event<ErrorEventHandler, ErrorEventArgs> () with get

    member _.AddCall text =
        self.Calls <- self.Calls @ [[ text ]]

    member _.EventInterface =
        { new IEvent<ErrorEventHandler, ErrorEventArgs> with
            member _.AddHandler handler =
                self.AddCall "AddHandler"
                self.Event.Publish.AddHandler handler

            member _.RemoveHandler handler =
                self.AddCall "RemoveHandler"
                self.Event.Publish.RemoveHandler handler

            member _.Subscribe observer =
                self.AddCall "IObservable.Subscribe"
                let disposable = self.Event.Publish.Subscribe observer
                newDisposable (fun () ->
                    self.AddCall "IObservable.Dispose"
                    disposable.Dispose ()
                )
        }

    member _.Subscribe () =
        subscribeEvent
            self.EventInterface
            (fun args ->
                let result = args.GetException () |> printException
                self.AddCall $"TestEvent.Subscribe({result})"
                result
            )

    member _.Iter subscription =
        subscription
        |> FSharp.Control.AsyncSeq.iteriAsync (fun i error -> async {
            self.AddCall $"TestEvent.Iter({i}: {error})"
        })

    member _.WaitCall text = async {
        while self.Calls |> List.last <> text do
            do! Async.SwitchToThreadPool ()
    }

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let testEvent = TestEvent ()

async {
    testEvent.AddCall "1"
    let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
    do! testEvent.WaitCall "AddHandler"
    testEvent.AddCall "2"
    do! child
    testEvent.AddCall "3"
}
|> Async.runWithTimeout 300
|> _equal None

testEvent.Calls
|> Seq.toList
|> _equal [[ "1"; "AddHandler"; "2"; "RemoveHandler" ]]

╭─[ 446.72ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Debug] runWithTimeoutAsync / timeout: 300                       │
│ <null>                                                                       │
│ [ 1, AddHandler, 2, RemoveHandler ]                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let testEvent = TestEvent ()

async {
    testEvent.AddCall "1"
    let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
    do! testEvent.WaitCall "AddHandler"
    testEvent.AddCall "2"
    use _ = testEvent.EventInterface.Subscribe (fun args ->
        testEvent.AddCall $"testEvent.EventInterface.Subscribe({args})"
    )
    testEvent.AddCall "3"
    do! child
    testEvent.AddCall "4"
}
|> Async.runWithTimeout 300
|> _equal None

testEvent.Calls
|> _equal [[ "1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; 
"RemoveHandler"; "IObservable.Dispose" ]]

╭─[ 397.03ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:00 #2 [Debug] runWithTimeoutAsync / timeout: 300                       │
│ <null>                                                                       │
│ [ 1, AddHandler, 2, IObservable.Subscribe, 3, RemoveHandler,                 │
│ IObservable.Dispose ]                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let testEvent = TestEvent ()

async {
    testEvent.AddCall "1"
    let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
    do! testEvent.WaitCall "AddHandler"
    testEvent.AddCall "2"
    use _ = testEvent.EventInterface.Subscribe (fun args ->
        async {
            do! testEvent.WaitCall "TestEvent.Iter(0: System.Exception: error)"
            testEvent.AddCall 
$"testEvent.EventInterface.Subscribe({args.GetException () |> printException})"
        }
        |> Async.RunSynchronously
    )
    testEvent.AddCall "3"
    testEvent.Event.Trigger (null, ErrorEventArgs (Exception "error"))
    testEvent.AddCall "4"
    do! child
    testEvent.AddCall "5"
}
|> Async.runWithTimeout 300
|> _equal None

testEvent.Calls
|> _equal [[
    "1"
    "AddHandler"
    "2"
    "IObservable.Subscribe"
    "3"
    "TestEvent.Subscribe(System.Exception: error)"
    "TestEvent.Iter(0: System.Exception: error)"
    "testEvent.EventInterface.Subscribe(System.Exception: error)"
    "4"
    "RemoveHandler"
    "IObservable.Dispose"
]]

╭─[ 417.72ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:00 #3 [Debug] runWithTimeoutAsync / timeout: 300                       │
│ <null>                                                                       │
│ [ 1, AddHandler, 2, IObservable.Subscribe, 3,                                │
│ TestEvent.Subscribe(System.Exception: error), TestEvent.Iter(0:              │
│ System.Exception: error),                                                    │
│ testEvent.EventInterface.Subscribe(System.Exception: error), 4,              │
│ RemoveHandler, IObservable.Dispose ]                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let subscribeToken (token : System.Threading.CancellationToken) =
    let tcs = new System.Threading.Tasks.TaskCompletionSource ()
    System.Action tcs.SetResult |> token.Register |> ignore
    let start = System.DateTime.Now.Ticks
    FSharp.Control.AsyncSeq.unfoldAsync
        (fun () -> async {
            do! tcs.Task |> Async.AwaitTask
            return Some (System.DateTime.Now.Ticks - start, ())
        })
        ()

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let cts = new System.Threading.CancellationTokenSource ()

async {
    let! child =
        cts.Token
        |> subscribeToken
        |> FSharp.Control.AsyncSeq.tryFirst
        |> Async.StartChild

    do! Async.Sleep 100
    cts.Cancel ()
    return! child
}
|> Async.RunSynchronously
|> Option.get
|> _isGreaterThan 900000

╭─[ 149.94ms - stdout ]────────────────────────────────────────────────────────╮
│ 1022653                                                                      │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook AsyncSeq.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 301453 bytes to AsyncSeq.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Common (Polyglot)                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
let nl = System.Environment.NewLine
let q = @""""

── fsharp ──────────────────────────────────────────────────────────────────────
let inline cons head tail = head :: tail

── fsharp ──────────────────────────────────────────────────────────────────────
module String =
    let inline contains (value : string) (input : string) =
        input.Contains value

    let inline endsWith (value : string) (input : string) =
        input.EndsWith value

    let inline padLeft totalWidth paddingChar (input : string) =
        input.PadLeft (totalWidth, paddingChar)

    let inline replace (oldValue : string) (newValue : string) (input : string) 
=
        input.Replace (oldValue, newValue)

    let inline split separator (input : string) =
        input.Split separator

    let inline splitString (separator : string array) (input : string) =
        input.Split (separator, System.StringSplitOptions.None)

    let inline startsWith (value : string) (input : string) =
        input.StartsWith value

    let inline substring startIndex length (input : string) =
        input.Substring (startIndex, length)

    let inline toLower (input : string) =
        input.ToLower ()

    let inline toUpper (input : string) =
        input.ToUpper ()

    let inline trim (input : string) =
        input.Trim ()
    
    let inline trimEnd (trimChars : char array) (input : string) =
        input.TrimEnd trimChars

    let inline trimStart (trimChars : char array) (input : string) =
        input.TrimStart trimChars


    let ellipsis max value =
        if value |> String.length <= max
        then value
        else $"{value |> substring 0 max}..."

── fsharp ──────────────────────────────────────────────────────────────────────
type TicksGuid = System.Guid
type DateTimeGuid = System.Guid

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let testGuid = Guid "FEDCBA98-7654-3210-FEDC-BA9876543210"

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## dateTimeGuidFromDateTime                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline dateTimeGuidFromDateTime (guid: System.Guid) (dateTime: 
System.DateTime) =
    let guid = guid |> string
    let prefix = dateTime.ToString "yyyyMMdd-HHmm-ssff-ffff-f"
    DateTimeGuid $"{prefix}{guid.[[prefix.Length..]]}"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

dateTimeGuidFromDateTime testGuid DateTime.MinValue
|> _equal (DateTimeGuid "00010101-0000-0000-0000-0a9876543210")

╭─[ 44.34ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00010101-0000-0000-0000-0a9876543210                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

dateTimeGuidFromDateTime testGuid DateTime.MaxValue
|> _equal (DateTimeGuid $"99991231-2359-5999-9999-9{(testGuid |> 
string).[[^10..]]}")

╭─[ 28.53ms - stdout ]─────────────────────────────────────────────────────────╮
│ 99991231-2359-5999-9999-9a9876543210                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

dateTimeGuidFromDateTime testGuid DateTime.UnixEpoch
|> _equal (DateTimeGuid $"19700101-0000-0000-0000-0{(testGuid |> 
string).[[^10..]]}")

╭─[ 26.14ms - stdout ]─────────────────────────────────────────────────────────╮
│ 19700101-0000-0000-0000-0a9876543210                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## dateTimeFromGuid                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline dateTimeFromGuid (dateTimeGuid: DateTimeGuid) =
    let dateTimeGuid = dateTimeGuid |> string
    System.DateTime.ParseExact (dateTimeGuid.[[..24]] |> String.replace "-" "", 
"yyyyMMddHHmmssfffffff", null)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

dateTimeFromGuid (DateTimeGuid "00010101-0000-0000-0000-0a9876543210")
|> _equal DateTime.MinValue

╭─[ 19.21ms - stdout ]─────────────────────────────────────────────────────────╮
│ 0001-01-01 00:00:00Z                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

dateTimeFromGuid (DateTimeGuid $"99991231-2359-5999-9999-9{(testGuid |> 
string).[[^10..]]}")
|> _equal DateTime.MaxValue

╭─[ 22.94ms - stdout ]─────────────────────────────────────────────────────────╮
│ 9999-12-31 23:59:59Z                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

dateTimeFromGuid (DateTimeGuid $"19700101-0000-0000-0000-0{(testGuid |> 
string).[[^10..]]}")
|> _equal DateTime.UnixEpoch

╭─[ 23.12ms - stdout ]─────────────────────────────────────────────────────────╮
│ 1970-01-01 00:00:00Z                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## ticksGuidFromTicks                                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline ticksGuidFromTicks (guid: System.Guid) (ticks: int64) =
    let guid = guid |> string
    let ticks = ticks |> string |> String.padLeft 18 '0'
    TicksGuid 
$"{ticks.[[0..7]]}-{ticks.[[8..11]]}-{ticks.[[12..15]]}-{ticks.[[16..17]]}{guid.
[[21..]]}"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

ticksGuidFromTicks testGuid 0L
|> _equal (TicksGuid "00000000-0000-0000-00dc-ba9876543210")

╭─[ 22.90ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00000000-0000-0000-00dc-ba9876543210                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

ticksGuidFromTicks testGuid 999999999999999999L
|> _equal (TicksGuid $"99999999-9999-9999-99dc-b{(testGuid |> 
string).[[^10..]]}")

╭─[ 30.75ms - stdout ]─────────────────────────────────────────────────────────╮
│ 99999999-9999-9999-99dc-ba9876543210                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## ticksFromGuid                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline ticksFromGuid (ticksGuid: DateTimeGuid) =
    let ticks = ticksGuid |> string
    int64 
$"{ticks.[[0..7]]}{ticks.[[9..12]]}{ticks.[[14..17]]}{ticks.[[19..20]]}"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

ticksFromGuid (TicksGuid "00000000-0000-0000-00dc-ba9876543210")
|> _equal 0L

╭─[ 19.87ms - stdout ]─────────────────────────────────────────────────────────╮
│ 0                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

ticksFromGuid (TicksGuid $"99999999-9999-9999-99{(testGuid |> 
string).[[^14..]]}")
|> _equal 999999999999999999L

╭─[ 27.42ms - stdout ]─────────────────────────────────────────────────────────╮
│ 999999999999999999                                                           │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## newGuidFromDateTime                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline newGuidFromDateTime (dateTime: System.DateTime) =
    let guid = System.Guid.NewGuid ()
    dateTimeGuidFromDateTime guid dateTime

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

newGuidFromDateTime System.DateTime.UtcNow
|> dateTimeFromGuid
|> fun dateTime -> (dateTime - System.DateTime.UtcNow).TotalSeconds |> int
|> _equal 0

╭─[ 37.62ms - stdout ]─────────────────────────────────────────────────────────╮
│ 0                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## newGuidFromTicks                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline newGuidFromTicks (ticks: int64) =
    let guid = System.Guid.NewGuid ()
    ticksGuidFromTicks guid ticks

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

newGuidFromTicks System.DateTime.UtcNow.Ticks
|> ticksFromGuid
|> fun ticks -> (ticks - System.DateTime.UtcNow.Ticks) / 100000L
|> _equal 0L

╭─[ 33.82ms - stdout ]─────────────────────────────────────────────────────────╮
│ 0                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## memoize                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline memoize fn =
    let result = lazy fn ()
    fun () -> result.Value

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let mutable count = 0
let add =
    fun () -> count <- count + 1
    |> memoize

add ()
add ()
add ()

count
|> _equal 1

╭─[ 17.02ms - stdout ]─────────────────────────────────────────────────────────╮
│ 1                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## printException                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline printException (ex : System.Exception) =
    $"{ex.GetType ()}: {ex.Message}"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

fun () -> failwith "test"
|> _throwsC (fun ex _ ->
    printException ex
    |> _equal "System.Exception: test"
)

╭─[ 29.74ms - stdout ]─────────────────────────────────────────────────────────╮
│ FSI_0034+it@3-1                                                              │
│ System.Exception: test                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## TraceLevel                                                                │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type TraceLevel =
    | Verbose
    | Debug
    | Info
    | Warning
    | Critical

let inline getLocals () = ""

let mutable traceEnabled = true
let mutable traceCount = 0
let mutable traceLevel = Verbose
let mutable traceDump = false

── fsharp ──────────────────────────────────────────────────────────────────────
let testTraceLevel level =
    traceEnabled && level >= traceLevel

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## traceRaw                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let rec traceRaw level fn =
    if level |> testTraceLevel then
        traceCount <- traceCount + 1

        let text = $"%s{fn ()}"

        System.Console.WriteLine text
#if !WASM && !FABLE_COMPILER
        if traceDump then
            try
                let tmpPath = System.IO.Path.GetTempPath ()
                let logDir = System.IO.Path.Combine (tmpPath, "!polyglot")
                System.IO.Directory.CreateDirectory logDir |> ignore
                let logFile = System.IO.Path.Combine (logDir, 
$"{newGuidFromDateTime System.DateTime.Now}.txt")
                System.IO.File.WriteAllTextAsync (logFile, text) |> 
Async.AwaitTask |> Async.RunSynchronously
            with ex ->
                traceRaw Critical (fun () -> $"trace / ex: {ex |> 
printException}")
#endif

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

traceRaw Debug (fun () -> "test")

╭─[ 5.99ms - stdout ]──────────────────────────────────────────────────────────╮
│ test                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## trace                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let private replStart =
#if INTERACTIVE || !FABLE_COMPILER
    fun () ->
        if System.Reflection.Assembly.GetEntryAssembly().GetName().Name <> 
"Microsoft.DotNet.Interactive.App"
        then Some System.DateTime.Now.Ticks
        else None
    |> memoize
#else
    fun () -> None : int64 option
#endif

let trace level fn getLocals =
    fun () ->
        let time =
#if WASM
            ""
#else
            match replStart () with
            | Some replStart ->
                let t = System.DateTime.Now.Ticks - replStart |> System.TimeSpan
                System.DateTime (1, 1, 1, t.Hours, t.Minutes, t.Seconds, 
t.Milliseconds, t.Microseconds)
            | None -> System.DateTime.Now
            |> fun dateTime ->
#if FABLE_COMPILER_RUST
                "hh:mm:ss"
#else
                "HH:mm:ss"
#endif
                |> dateTime.ToString
#endif
        $"{time} #{traceCount} [[%A{level}]] %s{fn ()} / %s{getLocals ()}"
        |> String.trimStart [[||]]
        |> String.trimEnd [[| ' '; '/' |]]
    |> traceRaw level

let inline withTrace enabled fn =
    let oldTraceEnabled = traceEnabled
    try
        traceEnabled <- enabled
        fn ()
    finally
        traceEnabled <- oldTraceEnabled

let inline withTraceEnabled fn =
    withTrace true fn

let inline withTraceDisabled fn =
    withTrace false fn

let inline withTraceLevel level fn =
    let oldTraceLevel = traceLevel
    try
        traceLevel <- level
        fn ()
    finally
        traceLevel <- oldTraceLevel

let inline withTraceDump dump fn =
    let oldTraceDump = traceDump
    try
        traceDump <- dump
        fn ()
    finally
        traceDump <- oldTraceDump

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

trace Debug (fun () -> "test") getLocals

╭─[ 20.56ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #2 [Debug] test                                                     │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## newDisposable                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline newDisposable fn =
    { new System.IDisposable with
        member _.Dispose () = fn ()
    }

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let mutable newDisposableTest = 0
newDisposable (fun () -> newDisposableTest <- newDisposableTest + 1)
|> fun x -> x.Dispose ()
newDisposableTest |> _equal 1

╭─[ 12.60ms - stdout ]─────────────────────────────────────────────────────────╮
│ 1                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let mutable newDisposableTest = 0
fun () -> task {
    use x = newDisposable (fun () -> newDisposableTest <- newDisposableTest + 1)
    ()
}
|> fun x -> x () |> Async.AwaitTask |> Async.RunSynchronously
newDisposableTest |> _equal 1

╭─[ 89.15ms - stdout ]─────────────────────────────────────────────────────────╮
│ 1                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let mutable newDisposableTest = 0
async {
    use x = newDisposable (fun () -> newDisposableTest <- newDisposableTest + 1)
    ()
}
|> Async.RunSynchronously
newDisposableTest |> _equal 1

╭─[ 27.39ms - stdout ]─────────────────────────────────────────────────────────╮
│ 1                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let mutable newDisposableTest = 0
async {
    let x = newDisposable (fun () -> newDisposableTest <- newDisposableTest + 1)
    ()
}
|> Async.RunSynchronously
newDisposableTest |> _equal 0

╭─[ 26.18ms - stdout ]─────────────────────────────────────────────────────────╮
│ 0                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## retryFn                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline retryFn retries fn =
    let rec loop retry =
        try
            if retry < retries
            then fn () |> Some
            else None
        with ex ->
            let getLocals () = $"retry: {retry} / ex: {ex |> printException} / 
{getLocals ()}"
            trace Warning (fun () -> "retryFn") getLocals
            System.Threading.Thread.Sleep 1
            loop (retry + 1)
    loop 0

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let mutable retryFnTest = 0
fun () ->
    retryFnTest <- retryFnTest + 1
    retryFnTest
|> retryFn 3
|> _equal (Some 1)

╭─[ 22.52ms - stdout ]─────────────────────────────────────────────────────────╮
│ FSharpOption<Int32>                                                          │
│       Value: 1                                                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

fun () -> failwith "test"
|> retryFn 3
|> _equal None

╭─[ 23.70ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #3 [Warning] retryFn / retry: 0 / ex: System.Exception: test        │
│ 00:00:00 #4 [Warning] retryFn / retry: 1 / ex: System.Exception: test        │
│ 00:00:00 #5 [Warning] retryFn / retry: 2 / ex: System.Exception: test        │
│ <null>                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let mutable retryFnTest = 0
fun () ->
    if retryFnTest >= 2
    then retryFnTest
    else
        retryFnTest <- retryFnTest + 1
        failwith "test"
|> retryFn 3
|> _equal (Some 2)

╭─[ 24.43ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #6 [Warning] retryFn / retry: 0 / ex: System.Exception: test        │
│ 00:00:00 #7 [Warning] retryFn / retry: 1 / ex: System.Exception: test        │
│ FSharpOption<Int32>                                                          │
│       Value: 2                                                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook Common.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 353508 bytes to Common.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # CommonFSharp (Polyglot)                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## getUnionCaseName                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getUnionCaseName<'T> (x: 'T) =
    match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
    | case, _ -> case.Name

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

TraceLevel.Critical
|> getUnionCaseName
|> _equal (nameof TraceLevel.Critical)

╭─[ 41.02ms - stdout ]─────────────────────────────────────────────────────────╮
│ Critical                                                                     │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook CommonFSharp.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 275581 bytes to CommonFSharp.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Threading (Polyglot)                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## newDisposableToken                                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline newDisposableToken (mergeToken: System.Threading.CancellationToken 
option) =
    let cts = new System.Threading.CancellationTokenSource ()
    let cts =
        match mergeToken with
        | None -> cts
        | Some mergeToken ->
            System.Threading.CancellationTokenSource.CreateLinkedTokenSource [[|
cts.Token; mergeToken |]]
    let disposable = newDisposable cts.Cancel
    cts.Token, disposable

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let mutable counter = 0

let inline run fn =
    let token, disposable = newDisposableToken None
    use _ = disposable
    fn token
    async {
        fn token
    }
    |> Async.Start

let inline fn (token : System.Threading.CancellationToken) =
    counter <- counter + (if token.IsCancellationRequested then 10 else 1)

async {
    run fn
    do! Async.Sleep 10
    return counter
}
|> Async.RunSynchronously
|> _equal 11

╭─[ 115.58ms - stdout ]────────────────────────────────────────────────────────╮
│ 11                                                                           │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook Threading.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 278598 bytes to Threading.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Crypto (Polyglot)                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## hashText                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let hashText (input : string) =
    use sha256 = System.Security.Cryptography.SHA256.Create ()
    input
    |> System.Text.Encoding.UTF8.GetBytes
    |> sha256.ComputeHash
    |> Array.map (fun b -> b.ToString "x2")
    |> String.concat ""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

""
|> hashText
|> _equal "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"

╭─[ 37.67ms - stdout ]─────────────────────────────────────────────────────────╮
│ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855             │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

" "
|> hashText
|> _equal "36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068"

╭─[ 11.71ms - stdout ]─────────────────────────────────────────────────────────╮
│ 36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068             │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook Crypto.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 277414 bytes to Crypto.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # FileSystem (Polyglot)                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
b/net6.0/System.CommandLine.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/CommonFSharp.fs
#!import ../../lib/fsharp/Async.fs
#!import ../../lib/fsharp/AsyncSeq.fs
#!import ../../lib/fsharp/Runtime.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module CommonFSharp =

    open Common

    /// ## getUnionCaseName

    let inline getUnionCaseName<'T> (x: 'T) =
        match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
        | case, _ -> case.Name


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module AsyncSeq =

    open Common

    /// ## subscribeEvent

    let inline subscribeEvent (event: IEvent<'H, 'A>) map =
        let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 
'A>(event.AddHandler, event.RemoveHandler)
        System.Reactive.Linq.Observable.Select (observable, fun event -> map 
event.EventArgs)
        |> FSharp.Control.AsyncSeq.ofObservableBuffered

    let subscribeToken (token : System.Threading.CancellationToken) =
        let tcs = new System.Threading.Tasks.TaskCompletionSource ()
        System.Action tcs.SetResult |> token.Register |> ignore
        let start = System.DateTime.Now.Ticks
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun (...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Runtime =

    open Common

    /// ## isWindows

    let isWindows =
        fun () ->
            System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
                System.Runtime.InteropServices.OSPlatform.Windows
        |> memoize

    /// ## getExecutableSuffix

    let inline getExecutableSuffix () =
        if isWindows ()
        then ".exe"
        else ""

    /// ## splitCommand

    type private CommandParseStep =
        | Start
        | Path of quoted: bool
        | Arguments

    let splitCommand (command: string) =
        let rec loop (path, args) chars step =
            match chars, step with
            | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Operators                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
module Operators =
    let inline (</>) a b =
        System.IO.Path.Combine (a, b)

── fsharp ──────────────────────────────────────────────────────────────────────
open Operators

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## createTempDirectoryName                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline createTempDirectoryName () =
    let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name

    System.IO.Path.GetTempPath ()
    </> $"!{root}"
    </> string (newGuidFromDateTime System.DateTime.Now)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

createTempDirectoryName ()
|> _contains System.IO.Path.DirectorySeparatorChar

╭─[ 34.04ms - stdout ]─────────────────────────────────────────────────────────╮
│ /tmp/!dotnet-repl/20240226-2100-3715-1506-186aab004ee4                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## createTempDirectory                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline createTempDirectory () =
    let tempFolder = createTempDirectoryName ()
    let result = System.IO.Directory.CreateDirectory tempFolder

    if not result.Exists then
        let getLocals () =
            $"tempFolder: {tempFolder} / result: {({|
                Exists = result.Exists
                CreationTime = result.CreationTime
            |})} {getLocals ()}"

        trace Debug (fun () -> "createTempDirectory") getLocals

    tempFolder

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tempDirectory = createTempDirectory ()

Directory.Exists tempDirectory
|> _equal true

╭─[ 22.34ms - stdout ]─────────────────────────────────────────────────────────╮
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## getSourceDirectory                                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let getSourceDirectory =
    fun () -> __SOURCE_DIRECTORY__
    |> memoize

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

getSourceDirectory ()
|> System.IO.DirectoryInfo
|> fun dir -> dir.Name
|> _equal "fsharp"

╭─[ 21.55ms - stdout ]─────────────────────────────────────────────────────────╮
│ fsharp                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## findParent                                                                │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline findParent name isFile rootDir =
    let rec loop dir =
        if dir </> name |> (if isFile then System.IO.File.Exists else 
System.IO.Directory.Exists)
        then dir
        else
            dir
            |> System.IO.Directory.GetParent
            |> function
                | null -> failwith $"""No parent for {if isFile then "file" else
"dir"} '{name}' at '{rootDir}'"""
                | parent -> parent.FullName |> loop
    loop rootDir

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

getSourceDirectory () |> findParent ".paket" false
|> System.IO.DirectoryInfo
|> fun dir -> dir.Name
|> _equal "polyglot"

╭─[ 15.39ms - stdout ]─────────────────────────────────────────────────────────╮
│ polyglot                                                                     │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

getSourceDirectory () |> findParent "paket.dependencies" true
|> System.IO.DirectoryInfo
|> fun dir -> dir.Name
|> _equal "polyglot"

╭─[ 16.82ms - stdout ]─────────────────────────────────────────────────────────╮
│ polyglot                                                                     │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## readAllTextAsync                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline readAllTextAsync path =
    path |> System.IO.File.ReadAllTextAsync |> Async.AwaitTask

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## fileExistsContent                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline fileExistsContent path content = async {
    if path |> System.IO.File.Exists |> not
    then return false
    else
        let! existingContent = path |> readAllTextAsync
        return content = existingContent
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## writeAllTextAsync                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline writeAllTextAsync path contents =
    System.IO.File.WriteAllTextAsync (path, contents) |> Async.AwaitTask

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## writeAllTextExists                                                        │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline writeAllTextExists path contents = async {
    let! exists = contents |> fileExistsContent path
    if not exists
    then do! contents |> writeAllTextAsync path
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## waitForFileAccess                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline waitForFileAccess access path =
    let fileAccess, fileShare =
        access
        |> Option.defaultValue (System.IO.FileAccess.ReadWrite, 
System.IO.FileShare.Read)

    let rec loop retry = async {
        try
            use _ = new System.IO.FileStream (
                path,
                System.IO.FileMode.Open,
                fileAccess,
                fileShare
            )
            return retry
        with ex ->
            if retry % 100 = 0 then
                let getLocals () = $"path: {path |> System.IO.Path.GetFileName} 
/ ex: {ex |> printException} / {getLocals ()}"
                trace Debug (fun () -> "waitForFileAccess") getLocals
            do! Async.Sleep 10
            return! loop (retry + 1)
    }
    loop 0

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tempFolder = createTempDirectory ()
let path = tempFolder </> "test.txt"

let inline lockFile () = async {
    trace Debug (fun () -> "_1") getLocals
    use stream = new System.IO.FileStream (
        path,
        System.IO.FileMode.Open,
        System.IO.FileAccess.ReadWrite,
        System.IO.FileShare.None
    )
    trace Debug (fun () -> "_2") getLocals
    do! Async.Sleep 2000
    trace Debug (fun () -> "_3") getLocals
    stream.Seek (0L, SeekOrigin.Begin) |> ignore
    trace Debug (fun () -> "_4") getLocals
    stream.WriteByte 49uy
    trace Debug (fun () -> "_5") getLocals
    stream.Flush ()
    trace Debug (fun () -> "_6") getLocals
}

async {
    trace Debug (fun () -> "1") getLocals
    do! "0" |> writeAllTextAsync path
    trace Debug (fun () -> "2") getLocals
    let! child = lockFile () |> Async.StartChild
    trace Debug (fun () -> "3") getLocals
    do! Async.Sleep 1
    trace Debug (fun () -> "4") getLocals
    let! retries = path |> waitForFileAccess None
    trace Debug (fun () -> "5") getLocals
    let! text = path |> readAllTextAsync
    trace Debug (fun () -> "6") getLocals
    do! child
    trace Debug (fun () -> "7") getLocals
    return retries, text
}
|> Async.runWithTimeout 3000
|> function
    | Some (retries, text) ->
        retries
        |> _isBetween
            (if Runtime.isWindows () then 100 else 100)
            (if Runtime.isWindows () then 150 else 200)

        text |> _equal "1"

        true
    | _ -> false
|> _equal true

╭─[ 2.29s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Debug] 1                                                        │
│ 00:00:00 #2 [Debug] 2                                                        │
│ 00:00:00 #3 [Debug] _1                                                       │
│ 00:00:00 #4 [Debug] 3                                                        │
│ 00:00:00 #5 [Debug] _2                                                       │
│ 00:00:00 #6 [Debug] 4                                                        │
│ 00:00:00 #7 [Debug] waitForFileAccess / path: test.txt / ex:                 │
│ System.IO.IOException: The process cannot access the file                    │
│ '/tmp/!dotnet-repl/20240226-2100-3774-7434-7e74182d9db4/test.txt' because it │
│ is being used by another process.                                            │
│ 00:00:01 #8 [Debug] waitForFileAccess / path: test.txt / ex:                 │
│ System.IO.IOException: The process cannot access the file                    │
│ '/tmp/!dotnet-repl/20240226-2100-3774-7434-7e74182d9db4/test.txt' because it │
│ is being used by another process.                                            │
│ 00:00:02 #9 [Debug] _3                                                       │
│ 00:00:02 #10 [Debug] _4                                                      │
│ 00:00:02 #11 [Debug] _5                                                      │
│ 00:00:02 #12 [Debug] _6                                                      │
│ 00:00:02 #13 [Debug] 5                                                       │
│ 00:00:02 #14 [Debug] 6                                                       │
│ 00:00:02 #15 [Debug] 7                                                       │
│ 167                                                                          │
│ 167                                                                          │
│ 167                                                                          │
│ 1                                                                            │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## readAllTextRetryAsync                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline readAllTextRetryAsync fullPath =
    let rec loop retry = async {
        try
            if retry > 0
            then do!
                fullPath
                |> waitForFileAccess (Some (
                    System.IO.FileAccess.Read,
                    System.IO.FileShare.Read
                ))
                |> Async.runWithTimeoutAsync 1000
                |> Async.Ignore
            return! fullPath |> readAllTextAsync |> Async.map Some
        with ex ->
            let getLocals () = $"retry: {retry} / ex: {ex |> printException} / 
{getLocals ()}"
            trace Debug (fun () -> $"watchWithFilter / readContent") getLocals
            if retry = 0
            then return! loop (retry + 1)
            else return None
    }
    loop 0

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## deleteDirectoryAsync                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline deleteDirectoryAsync path =
    let rec loop retry = async {
        try
            System.IO.Directory.Delete (path, true)
            return retry
        with ex ->
            if retry % 100 = 0 then
                let getLocals () = $"path: {path |> System.IO.Path.GetFileName} 
/ ex: {ex |> printException} / {getLocals ()}"
                trace Debug (fun () -> "deleteDirectoryAsync") getLocals
            do! Async.Sleep 10
            return! loop (retry + 1)
    }
    loop 0

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tempFolder = createTempDirectory ()
let path = tempFolder </> "test"

let inline lockDirectory () = async {
    trace Debug (fun () -> "_1") getLocals
    System.IO.File.WriteAllText (path </> "test.txt", "0")
    use _ = new System.IO.FileStream (
        path </> "test.txt",
        System.IO.FileMode.Open,
        System.IO.FileAccess.ReadWrite,
        System.IO.FileShare.None
    )
    trace Debug (fun () -> "_2") getLocals
    do! Async.Sleep 2000
    trace Debug (fun () -> "_3") getLocals
}

async {
    trace Debug (fun () -> "1") getLocals
    Directory.CreateDirectory path |> ignore
    trace Debug (fun () -> "2") getLocals
    let! child = lockDirectory () |> Async.StartChild
    trace Debug (fun () -> "3") getLocals
    do! Async.Sleep 60
    trace Debug (fun () -> "4") getLocals
    let! retries = deleteDirectoryAsync path
    trace Debug (fun () -> "5") getLocals
    do! child
    trace Debug (fun () -> "6") getLocals
    return retries
}
|> Async.runWithTimeout 3000
|> function
    | Some retries ->
        retries
        |> _isBetween
            (if Runtime.isWindows () then 100 else 0)
            (if Runtime.isWindows () then 150 else 0)

        true
    | _ -> false
|> _equal true

╭─[ 2.26s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:02 #16 [Debug] 1                                                       │
│ 00:00:02 #17 [Debug] 2                                                       │
│ 00:00:02 #18 [Debug] 3                                                       │
│ 00:00:02 #19 [Debug] _1                                                      │
│ 00:00:02 #20 [Debug] _2                                                      │
│ 00:00:02 #21 [Debug] 4                                                       │
│ 00:00:02 #22 [Debug] 5                                                       │
│ 00:00:04 #23 [Debug] _3                                                      │
│ 00:00:04 #24 [Debug] 6                                                       │
│ 0                                                                            │
│ 0                                                                            │
│ 0                                                                            │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## deleteFileAsync                                                           │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline deleteFileAsync path =
    let rec loop retry = async {
        try
            System.IO.File.Delete path
            return retry
        with ex ->
            if retry % 100 = 0 then
                let getLocals () = $"path: {path |> System.IO.Path.GetFileName} 
/ ex: {ex |> printException} / {getLocals ()}"
                trace Warning (fun () -> "deleteFileAsync") getLocals
            do! Async.Sleep 10
            return! loop (retry + 1)
    }
    loop 0

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tempFolder = createTempDirectory ()
let path = tempFolder </> "test.txt"

let inline lockFile () = async {
    trace Debug (fun () -> "_1") getLocals
    use _ = new System.IO.FileStream (
        path,
        System.IO.FileMode.Open,
        System.IO.FileAccess.ReadWrite,
        System.IO.FileShare.None
    )
    trace Debug (fun () -> "_2") getLocals
    do! Async.Sleep 2000
    trace Debug (fun () -> "_3") getLocals
}

async {
    trace Debug (fun () -> "1") getLocals
    do! "0" |> writeAllTextAsync path
    trace Debug (fun () -> "2") getLocals
    let! child = lockFile () |> Async.StartChild
    trace Debug (fun () -> "3") getLocals
    do! Async.Sleep 1
    trace Debug (fun () -> "4") getLocals
    let! retries = deleteFileAsync path
    trace Debug (fun () -> "5") getLocals
    do! child
    trace Debug (fun () -> "6") getLocals
    return retries
}
|> Async.runWithTimeout 3000
|> function
    | Some retries ->
        retries
        |> _isBetween
            (if Runtime.isWindows () then 100 else 0)
            (if Runtime.isWindows () then 150 else 0)

        true
    | _ -> false
|> _equal true

╭─[ 2.11s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:04 #25 [Debug] 1                                                       │
│ 00:00:04 #26 [Debug] 2                                                       │
│ 00:00:04 #27 [Debug] 3                                                       │
│ 00:00:04 #28 [Debug] _1                                                      │
│ 00:00:04 #29 [Debug] _2                                                      │
│ 00:00:04 #30 [Debug] 4                                                       │
│ 00:00:04 #31 [Debug] 5                                                       │
│ 00:00:06 #32 [Debug] _3                                                      │
│ 00:00:06 #33 [Debug] 6                                                       │
│ 0                                                                            │
│ 0                                                                            │
│ 0                                                                            │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## moveFileAsync                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline moveFileAsync newPath oldPath =
    let rec loop retry = async {
        try
            System.IO.File.Move (oldPath, newPath)
            return retry
        with ex ->
            if retry % 100 = 0 then
                let getLocals () =
                    $"oldPath: {oldPath |> System.IO.Path.GetFileName} / 
newPath: {newPath |> System.IO.Path.GetFileName} / ex: {ex |> printException} / 
{getLocals ()}"
                trace Warning (fun () -> "moveFileAsync") getLocals
            do! Async.Sleep 10
            return! loop (retry + 1)
    }
    loop 0

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tempFolder = createTempDirectory ()
let path = tempFolder </> "test.txt"
let newPath = tempFolder </> "test2.txt"

let inline lockFile () = async {
    trace Debug (fun () -> "_1") getLocals
    use _ = new System.IO.FileStream (
        path,
        System.IO.FileMode.Open,
        System.IO.FileAccess.ReadWrite,
        System.IO.FileShare.None
    )
    trace Debug (fun () -> "_2") getLocals
    do! Async.Sleep 2000
    trace Debug (fun () -> "_3") getLocals
}

async {
    trace Debug (fun () -> "1") getLocals
    do! "0" |> writeAllTextAsync path
    trace Debug (fun () -> "2") getLocals
    let! child = lockFile () |> Async.StartChild
    trace Debug (fun () -> "3") getLocals
    do! Async.Sleep 1
    trace Debug (fun () -> "4") getLocals
    let! retries1 = path |> moveFileAsync newPath
    trace Debug (fun () -> "5") getLocals
    let! retries2 = newPath |> waitForFileAccess None
    trace Debug (fun () -> "6") getLocals
    let! text = newPath |> readAllTextAsync
    trace Debug (fun () -> "7") getLocals
    do! child
    trace Debug (fun () -> "8") getLocals
    return retries1, retries2, text
}
|> Async.runWithTimeout 3000
|> function
    | Some (retries1, retries2, text) ->
        retries1
        |> _isBetween
            (if Runtime.isWindows () then 100 else 0)
            (if Runtime.isWindows () then 150 else 0)

        retries2
        |> _isBetween
            (if Runtime.isWindows () then 0 else 100)
            (if Runtime.isWindows () then 0 else 200)

        text |> _equal "0"

        true
    | _ -> false
|> _equal true

╭─[ 2.20s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:06 #34 [Debug] 1                                                       │
│ 00:00:06 #35 [Debug] 2                                                       │
│ 00:00:06 #36 [Debug] 3                                                       │
│ 00:00:06 #37 [Debug] _1                                                      │
│ 00:00:06 #38 [Debug] _2                                                      │
│ 00:00:06 #39 [Debug] 4                                                       │
│ 00:00:06 #40 [Debug] 5                                                       │
│ 00:00:06 #41 [Debug] waitForFileAccess / path: test2.txt / ex:               │
│ System.IO.IOException: The process cannot access the file                    │
│ '/tmp/!dotnet-repl/20240226-2100-4460-6074-6e9d4fadcb49/test2.txt' because   │
│ it is being used by another process.                                         │
│ 00:00:08 #42 [Debug] waitForFileAccess / path: test2.txt / ex:               │
│ System.IO.IOException: The process cannot access the file                    │
│ '/tmp/!dotnet-repl/20240226-2100-4460-6074-6e9d4fadcb49/test2.txt' because   │
│ it is being used by another process.                                         │
│ 00:00:08 #43 [Debug] _3                                                      │
│ 00:00:08 #44 [Debug] 6                                                       │
│ 00:00:08 #45 [Debug] 7                                                       │
│ 00:00:08 #46 [Debug] 8                                                       │
│ 0                                                                            │
│ 0                                                                            │
│ 0                                                                            │
│ 167                                                                          │
│ 167                                                                          │
│ 167                                                                          │
│ 0                                                                            │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## watchDirectory                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type FileSystemChangeType =
    | Failure
    | Changed
    | Created
    | Deleted
    | Renamed

[[<RequireQualifiedAccess>]]
type FileSystemChange =
    | Failure of exn: exn
    | Changed of path: string * content: string option
    | Created of path: string * content: string option
    | Deleted of path: string
    | Renamed of oldPath: string * (string * string option)


let inline watchDirectoryWithFilter filter shouldReadContent path =
    let fullPath = path |> System.IO.Path.GetFullPath
    let getLocals () = $"filter: {filter} / {getLocals ()}"

    let watcher =
        new System.IO.FileSystemWatcher (
            Path = fullPath,
            NotifyFilter = filter,
            EnableRaisingEvents = true,
            IncludeSubdirectories = true
        )

    let inline getEventPath (path : string) =
        path |> String.trim |> String.replace fullPath "" |> String.trimStart 
[[| '/'; '\\' |]]

    let inline ticks () =
        System.DateTime.UtcNow.Ticks

    let changedStream =
        AsyncSeq.subscribeEvent
            watcher.Changed
            (fun event ->
                ticks (),
                [[ FileSystemChange.Changed (getEventPath event.FullPath, None) 
]]
            )

    let deletedStream =
        AsyncSeq.subscribeEvent
            watcher.Deleted
            (fun event ->
                ticks (),
                [[ FileSystemChange.Deleted (getEventPath event.FullPath) ]]
            )

    let createdStream =
        AsyncSeq.subscribeEvent
            watcher.Created
            (fun event ->
                let path = getEventPath event.FullPath
                ticks (), [[
                    FileSystemChange.Created (path, None)
                    if Runtime.isWindows () then
                        FileSystemChange.Changed (path, None)
                ]])

    let renamedStream =
        AsyncSeq.subscribeEvent
            watcher.Renamed
            (fun event ->
                ticks (), [[
                    FileSystemChange.Renamed (
                        getEventPath event.OldFullPath,
                        (getEventPath event.FullPath, None)
                    )
                ]]
            )

    let failureStream =
        AsyncSeq.subscribeEvent
            watcher.Error
            (fun event -> ticks (), [[ FileSystemChange.Failure 
(event.GetException ()) ]])

    let stream =
        [[
            changedStream
            deletedStream
            createdStream
            renamedStream
            failureStream
        ]]
        |> FSharp.Control.AsyncSeq.mergeAll
        |> FSharp.Control.AsyncSeq.map (fun (t, events) ->
            events
            |> List.fold
                (fun (i, events) event ->
                    i + 1L,
                    (t + i, event) :: events)
                (0L, [[]])
            |> snd
            |> List.rev
        )
        |> FSharp.Control.AsyncSeq.concatSeq
        |> FSharp.Control.AsyncSeq.mapAsyncParallel (fun (t, event) -> async {
            match shouldReadContent event, event with
            | true, FileSystemChange.Changed (path, _) ->
                do! Async.Sleep 5
                let! content = fullPath </> path |> readAllTextRetryAsync
                return t, FileSystemChange.Changed (path, content)
            | true, FileSystemChange.Created (path, _) ->
                do! Async.Sleep 5
                let! content = fullPath </> path |> readAllTextRetryAsync
                return t, FileSystemChange.Created (path, content)
            | true, FileSystemChange.Renamed (oldPath, (newPath, _)) ->
                let! content = fullPath </> newPath |> readAllTextRetryAsync
                return t, FileSystemChange.Renamed (oldPath, (newPath, content))
            | _ -> return t, event
        })

    let disposable =
        newDisposable (fun () ->
            trace Debug (fun () -> "watchWithFilter / Disposing watch stream") 
getLocals
            watcher.EnableRaisingEvents <- false
            watcher.Dispose ()
        )

    stream, disposable

let inline watchDirectory path =
    watchDirectoryWithFilter
        (System.IO.NotifyFilters.FileName
        // ||| System.IO.NotifyFilters.DirectoryName
        // ||| System.IO.NotifyFilters.Attributes
        //// ||| System.IO.NotifyFilters.Size
        ||| System.IO.NotifyFilters.LastWrite
        //// ||| System.IO.NotifyFilters.LastAccess
        // ||| System.IO.NotifyFilters.CreationTime
        // ||| System.IO.NotifyFilters.Security
        )
        path

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### testEventsRaw (test)                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline testEventsRaw
    (watchFn : (_ -> bool) -> string -> FSharp.Control.AsyncSeq<int64 * 
FileSystemChange> * IDisposable)
    write
    =
    let tempDirectory = createTempDirectory ()
    let stream, disposable = watchFn (fun _ -> true) tempDirectory

    let events = System.Collections.Concurrent.ConcurrentBag ()

    let inline iter () =
        stream
        |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { 
events.Add event })

    let run = async {
        let! _ = iter () |> Async.StartChild
        do! Async.Sleep 250
        return! write tempDirectory
    }

    try
        run
        |> Async.runWithTimeout 60000
        |> _equal (Some ())
    finally
        disposable.Dispose ()
        deleteDirectoryAsync tempDirectory |> Async.Ignore |> 
Async.RunSynchronously

    let eventsLog =
        events
        |> Seq.toList
        |> List.sortBy fst
        |> List.fold
            (fun (prev, acc) (ticks, event) ->
                ticks, (ticks, (if prev = 0L then 0L else ticks - prev), event) 
:: acc
            )
            (0L, [[]])
        |> snd
        |> List.rev
        |> List.map (fun (diff, n, event) ->
            let text = $"{n} / {diff} / {event}"
            if text |> String.length <= 100
            then text
            else text |> String.substring 0 100 |> String.replace "\n" ""
        )
        |> String.concat "\n"
    let getLocals () = $"eventsLog: \n{eventsLog} / {getLocals ()}"
    trace Debug (fun () -> "testEventsRaw") getLocals

    events
    |> Seq.toList
    |> List.sortBy fst
    |> List.map snd
    |> List.fold
        (fun acc event ->
            match acc, event with
            | FileSystemChange.Changed (lastPath, Some lastContent) as lastEvent
:: acc,
                FileSystemChange.Changed (path, Some content)
                when lastPath = path && content |> String.startsWith lastContent
                ->
                event :: acc
            | _ -> event :: acc
        )
        [[]]
    |> List.rev

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ #### fast (test)                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline write path = async {
    let n = 2

    for i = 1 to n do
        do! $"a{i}" |> writeAllTextAsync (path </> $"file{i}.txt")

    do! Async.Sleep 250

    for i = 1 to n do
        do! $"b{i}" |> writeAllTextAsync (path </> $"file{i}.txt")

    do! Async.Sleep 250

    for i = 1 to n do
        do! path </> $"file{i}.txt" |> moveFileAsync (path </> $"file_{i}.txt") 
|> Async.Ignore

    do! Async.Sleep 250

    for i = 1 to n do
        do! $"c{i}" |> writeAllTextAsync (path </> $"file_{i}.txt")

    do! Async.Sleep 250

    for i = 1 to n do
        do! deleteFileAsync (path </> $"file_{i}.txt") |> Async.Ignore

    do! Async.Sleep 250
}

let inline run () =
    let events = testEventsRaw watchDirectory write

    events
    |> _sequenceEqual [[
        FileSystemChange.Created ("file1.txt", Some "a1")
        FileSystemChange.Changed ("file1.txt", Some "a1")
        FileSystemChange.Created ("file2.txt", Some "a2")
        FileSystemChange.Changed ("file2.txt", Some "a2")

        FileSystemChange.Changed ("file1.txt", Some "b1")
        FileSystemChange.Changed ("file2.txt", Some "b2")

        FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "b1"))
        FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "b2"))

        FileSystemChange.Changed ("file_1.txt", Some "c1")
        FileSystemChange.Changed ("file_2.txt", Some "c2")

        FileSystemChange.Deleted "file_1.txt"
        FileSystemChange.Deleted "file_2.txt"
    ]]

run
|> retryFn 3
|> _equal (Some ())

╭─[ 3.38s - stdout ]───────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│ 00:00:13 #47 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ 00:00:13 #48 [Debug] testEventsRaw / eventsLog:                              │
│ 0 / 638445780498035822 / Created ("file1.txt", Some "a1")                    │
│ 13766 / 638445780498049588 / Changed ("file1.txt", Some "a1")                │
│ 1599 / 638445780498051187 / Created ("file2.txt", Some "a2")                 │
│ 69 / 638445780498051256 / Changed ("file2.txt", Some "a2")                   │
│ 2489895 / 638445780500541151 / Changed ("file1.txt", Some "b1")              │
│ 786 / 638445780500541937 / Changed ("file1.txt", Some "b1")                  │
│ 4348 / 638445780500546285 / Changed ("file2.txt", Some "b2")                 │
│ 214 / 638445780500546499 / Changed ("file2.txt", Some "b2")                  │
│ 2530046 / 638445780503076545 / Renamed ("file1.txt", ("file_1.txt", Some     │
│ "b1"))                                                                       │
│ 1111 / 638445780503077656 / Renamed ("file2.txt", ("file_2.txt", Some "b2")) │
│ 2501974 / 638445780505579630 / Changed ("file_1.txt", Some "c1")             │
│ 384 / 638445780505580014 / Changed ("file_1.txt", Some "c1")                 │
│ 4754 / 638445780505584768 / Changed ("file_2.txt", Some "c2")                │
│ 155 / 638445780505584923 / Changed ("file_2.txt", Some "c2")                 │
│ 2517882 / 638445780508102805 / Deleted "file_1.txt"                          │
│ 1548 / 638445780508104353 / Deleted "file_2.txt"                             │
│ FSharpList<FileSystemChange>                                                 │
│       - path: file1.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: a1                                                          │
│         IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: True                                                      │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file1.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: a1                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file2.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: a2                                                          │
│         IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: True                                                      │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file2.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: a2                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file1.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: b1                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file2.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: b2                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - oldPath: file1.txt                                                   │
│         Item2:         - file_1.txt                                          │
│         - FSharpOption<String>                                               │
│             Value: b1                                                        │
│       - IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: True                                                      │
│       - oldPath: file2.txt                                                   │
│         Item2:         - file_2.txt                                          │
│         - FSharpOption<String>                                               │
│             Value: b2                                                        │
│       - IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: True                                                      │
│       - path: file_1.txt                                                     │
│         content: FSharpOption<String>                                        │
│           Value: c1                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file_2.txt                                                     │
│         content: FSharpOption<String>                                        │
│           Value: c2                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file_1.txt                                                     │
│         IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: False                                                     │
│         IsDeleted: True                                                      │
│         IsRenamed: False                                                     │
│       - path: file_2.txt                                                     │
│         IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: False                                                     │
│         IsDeleted: True                                                      │
│         IsRenamed: False                                                     │
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ #### slow (test)                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline write path = async {
    let n = 2

    let contents =
        [[ 1 .. n ]]
        |> List.map (string >> String.replicate 1_000_000)

    for i = 1 to n do
        do! $"{contents.[[i - 1]]}a" |> writeAllTextAsync (path </> 
$"file{i}.txt")

    do! Async.Sleep 1500

    for i = 1 to n do
        do! $"{contents.[[i - 1]]}b" |> writeAllTextAsync (path </> 
$"file{i}.txt")

    do! Async.Sleep 1500

    for i = 1 to n do
        do! path </> $"file{i}.txt" |> moveFileAsync (path </> $"file_{i}.txt") 
|> Async.Ignore

    do! Async.Sleep 1500

    for i = 1 to n do
        do! $"{contents.[[i - 1]]}c" |> writeAllTextAsync (path </> 
$"file_{i}.txt")

    do! Async.Sleep 1500

    for i = 1 to n do
        do! deleteFileAsync (path </> $"file_{i}.txt") |> Async.Ignore

    do! Async.Sleep 1500
}

let inline run () =
    let events =
        testEventsRaw watchDirectory write
        |> List.map (function
            | FileSystemChange.Changed (path, Some content) ->
                FileSystemChange.Changed (path, content |> Seq.distinct |> 
Seq.map string |> String.concat "" |> Some)
            | FileSystemChange.Created (path, Some content) ->
                FileSystemChange.Created (path, content |> Seq.distinct |> 
Seq.map string |> String.concat "" |> Some)
            | FileSystemChange.Renamed (oldPath, (newPath, Some content)) ->
                FileSystemChange.Renamed (
                    oldPath,
                    (newPath, content |> Seq.distinct |> Seq.map string |> 
String.concat "" |> Some)
                )
            | event -> event
        )

    events
    |> _sequenceEqual [[
        FileSystemChange.Created ("file1.txt", Some "1a")
        FileSystemChange.Changed ("file1.txt", Some "1a")
        FileSystemChange.Created ("file2.txt", Some "2a")
        FileSystemChange.Changed ("file2.txt", Some "2a")

        FileSystemChange.Changed ("file1.txt", Some "1b")
        FileSystemChange.Changed ("file2.txt", Some "2b")

        FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "1b"))
        FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "2b"))

        FileSystemChange.Changed ("file_1.txt", Some "1c")
        FileSystemChange.Changed ("file_2.txt", Some "2c")

        FileSystemChange.Deleted "file_1.txt"
        FileSystemChange.Deleted "file_2.txt"
    ]]

run
|> retryFn 5
|> _equal (Some ())

╭─[ 13.07s - stdout ]──────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│ 00:00:23 #49 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ 00:00:25 #50 [Debug] testEventsRaw / eventsLog:                              │
│ 0 / 638445780537954748 / Created  ("file1.txt",   Some                       │
│ "1111111111111111111111111111111111111                                       │
│ 2604 / 638445780537957352 / Changed  ("file1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 222 / 638445780537957574 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 604 / 638445780537958178 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 340 / 638445780537958518 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 184 / 638445780537958702 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 235 / 638445780537958937 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 72 / 638445780537959009 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 195 / 638445780537959204 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 174 / 638445780537959378 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 256 / 638445780537959634 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 75 / 638445780537959709 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 373 / 638445780537960082 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 55 / 638445780537960137 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 371 / 638445780537960508 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 85 / 638445780537960593 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 328 / 638445780537960921 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 128 / 638445780537961049 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 113 / 638445780537961162 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 213 / 638445780537961375 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 170 / 638445780537961545 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 294 / 638445780537961839 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 297 / 638445780537962136 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 162 / 638445780537962298 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 266 / 638445780537962564 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 52 / 638445780537962616 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 271 / 638445780537962887 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 50 / 638445780537962937 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 275 / 638445780537963212 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 173 / 638445780537963385 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 259 / 638445780537963644 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 50 / 638445780537963694 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 290 / 638445780537963984 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 51 / 638445780537964035 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 275 / 638445780537964310 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 55 / 638445780537964365 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 318 / 638445780537964683 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 57 / 638445780537964740 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 292 / 638445780537965032 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 69 / 638445780537965101 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 196 / 638445780537965297 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 162 / 638445780537965459 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 296 / 638445780537965755 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 298 / 638445780537966053 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 229 / 638445780537966282 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 378 / 638445780537966660 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 266 / 638445780537966926 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 50 / 638445780537966976 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 327 / 638445780537967303 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 266 / 638445780537967569 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 224 / 638445780537967793 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 44 / 638445780537967837 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 284 / 638445780537968121 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 76 / 638445780537968197 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 210 / 638445780537968407 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 146 / 638445780537968553 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 250 / 638445780537968803 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 72 / 638445780537968875 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 239 / 638445780537969114 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 48 / 638445780537969162 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 5496 / 638445780537974658 / Changed  ("file1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 53559 / 638445780538028217 / Created  ("file2.txt",   Some                   │
│ "222222222222222222222222222222222                                           │
│ 157 / 638445780538028374 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 255 / 638445780538028629 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 362 / 638445780538028991 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 237 / 638445780538029228 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 69 / 638445780538029297 / Changed  ("file2.txt",   Some                      │
│ "222222222222222222222222222222222222                                        │
│ 212 / 638445780538029509 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 483 / 638445780538029992 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 3438 / 638445780538033430 / Changed  ("file2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 134 / 638445780538033564 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 253 / 638445780538033817 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 352 / 638445780538034169 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 359 / 638445780538034528 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 325 / 638445780538034853 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 369 / 638445780538035222 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 193 / 638445780538035415 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 198 / 638445780538035613 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 224 / 638445780538035837 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 224 / 638445780538036061 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 243 / 638445780538036304 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 191 / 638445780538036495 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 148 / 638445780538036643 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 164 / 638445780538036807 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 169 / 638445780538036976 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 148 / 638445780538037124 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 154 / 638445780538037278 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 194 / 638445780538037472 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 160 / 638445780538037632 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 161 / 638445780538037793 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 167 / 638445780538037960 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 151 / 638445780538038111 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 161 / 638445780538038272 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 170 / 638445780538038442 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 266 / 638445780538038708 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 152 / 638445780538038860 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 175 / 638445780538039035 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 158 / 638445780538039193 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 164 / 638445780538039357 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 159 / 638445780538039516 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 152 / 638445780538039668 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 166 / 638445780538039834 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 175 / 638445780538040009 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 155 / 638445780538040164 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 168 / 638445780538040332 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 160 / 638445780538040492 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 192 / 638445780538040684 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 157 / 638445780538040841 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 157 / 638445780538040998 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 185 / 638445780538041183 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 154 / 638445780538041337 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 179 / 638445780538041516 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 143 / 638445780538041659 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 154 / 638445780538041813 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 163 / 638445780538041976 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 162 / 638445780538042138 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 157 / 638445780538042295 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 182 / 638445780538042477 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 156 / 638445780538042633 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 171 / 638445780538042804 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 149 / 638445780538042953 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 164 / 638445780538043117 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 150 / 638445780538043267 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 163 / 638445780538043430 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 437 / 638445780538043867 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 168 / 638445780538044035 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 152 / 638445780538044187 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 289 / 638445780538044476 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 210 / 638445780538044686 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 173 / 638445780538044859 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 142 / 638445780538045001 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 164 / 638445780538045165 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 170 / 638445780538045335 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 176 / 638445780538045511 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 158 / 638445780538045669 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 166 / 638445780538045835 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 156 / 638445780538045991 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 260 / 638445780538046251 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 298 / 638445780538046549 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 251 / 638445780538046800 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 222 / 638445780538047022 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 205 / 638445780538047227 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 216 / 638445780538047443 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 144 / 638445780538047587 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 181 / 638445780538047768 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 161 / 638445780538047929 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 294 / 638445780538048223 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 152 / 638445780538048375 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 153 / 638445780538048528 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 159 / 638445780538048687 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 178 / 638445780538048865 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 173 / 638445780538049038 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 159 / 638445780538049197 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 161 / 638445780538049358 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 168 / 638445780538049526 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 168 / 638445780538049694 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 153 / 638445780538049847 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 158 / 638445780538050005 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 177 / 638445780538050182 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 175 / 638445780538050357 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 156 / 638445780538050513 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 178 / 638445780538050691 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 148 / 638445780538050839 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 157 / 638445780538050996 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 161 / 638445780538051157 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 162 / 638445780538051319 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 178 / 638445780538051497 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 171 / 638445780538051668 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 151 / 638445780538051819 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 155 / 638445780538051974 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 160 / 638445780538052134 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 168 / 638445780538052302 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 165 / 638445780538052467 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 217 / 638445780538052684 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 166 / 638445780538052850 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 154 / 638445780538053004 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 155 / 638445780538053159 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 149 / 638445780538053308 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 155 / 638445780538053463 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 159 / 638445780538053622 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 157 / 638445780538053779 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 187 / 638445780538053966 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 152 / 638445780538054118 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 388 / 638445780538054506 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 164 / 638445780538054670 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 40 / 638445780538054710 / Changed  ("file2.txt",   Some                      │
│ "222222222222222222222222222222222222                                        │
│ 15044761 / 638445780553099471 / Changed  ("file1.txt",   Some                │
│ "111111111111111111111111111111                                              │
│ 244 / 638445780553099715 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 1365 / 638445780553101080 / Changed  ("file1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 68 / 638445780553101148 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 183 / 638445780553101331 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 160 / 638445780553101491 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 162 / 638445780553101653 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 161 / 638445780553101814 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 158 / 638445780553101972 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 432 / 638445780553102404 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 159 / 638445780553102563 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 158 / 638445780553102721 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 161 / 638445780553102882 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 182 / 638445780553103064 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 171 / 638445780553103235 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 166 / 638445780553103401 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 169 / 638445780553103570 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 173 / 638445780553103743 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 166 / 638445780553103909 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 166 / 638445780553104075 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 199 / 638445780553104274 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 171 / 638445780553104445 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 171 / 638445780553104616 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 247 / 638445780553104863 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 25 / 638445780553104888 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 206 / 638445780553105094 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 52 / 638445780553105146 / Changed  ("file1.txt",   Some                      │
│ "111111111111111111111111111111111111                                        │
│ 450 / 638445780553105596 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 271 / 638445780553105867 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 375 / 638445780553106242 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 145 / 638445780553106387 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 180 / 638445780553106567 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 176 / 638445780553106743 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 176 / 638445780553106919 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 175 / 638445780553107094 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 179 / 638445780553107273 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 190 / 638445780553107463 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 207 / 638445780553107670 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 201 / 638445780553107871 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 225 / 638445780553108096 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 200 / 638445780553108296 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 200 / 638445780553108496 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 164 / 638445780553108660 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 163 / 638445780553108823 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 175 / 638445780553108998 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 167 / 638445780553109165 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 210 / 638445780553109375 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 171 / 638445780553109546 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 136 / 638445780553109682 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 181 / 638445780553109863 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 353 / 638445780553110216 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 263 / 638445780553110479 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 278 / 638445780553110757 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 292 / 638445780553111049 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 225 / 638445780553111274 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 200 / 638445780553111474 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 176 / 638445780553111650 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 264 / 638445780553111914 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 218 / 638445780553112132 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 190 / 638445780553112322 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 182 / 638445780553112504 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 218 / 638445780553112722 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 184 / 638445780553112906 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 200 / 638445780553113106 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 189 / 638445780553113295 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 185 / 638445780553113480 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 184 / 638445780553113664 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 180 / 638445780553113844 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 185 / 638445780553114029 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 273 / 638445780553114302 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 226 / 638445780553114528 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 175 / 638445780553114703 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 214 / 638445780553114917 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 205 / 638445780553115122 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 184 / 638445780553115306 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 181 / 638445780553115487 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 207 / 638445780553115694 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 225 / 638445780553115919 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 178 / 638445780553116097 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 178 / 638445780553116275 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 309 / 638445780553116584 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 232 / 638445780553116816 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 176 / 638445780553116992 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 167 / 638445780553117159 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 182 / 638445780553117341 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 174 / 638445780553117515 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 149 / 638445780553117664 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 163 / 638445780553117827 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 173 / 638445780553118000 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 270 / 638445780553118270 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 186 / 638445780553118456 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 166 / 638445780553118622 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 193 / 638445780553118815 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 148 / 638445780553118963 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 160 / 638445780553119123 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 187 / 638445780553119310 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 169 / 638445780553119479 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 163 / 638445780553119642 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 245 / 638445780553119887 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 188 / 638445780553120075 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 162 / 638445780553120237 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 183 / 638445780553120420 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 162 / 638445780553120582 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 185 / 638445780553120767 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 173 / 638445780553120940 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 171 / 638445780553121111 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 166 / 638445780553121277 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 168 / 638445780553121445 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 190 / 638445780553121635 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 171 / 638445780553121806 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 184 / 638445780553121990 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 156 / 638445780553122146 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 175 / 638445780553122321 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 162 / 638445780553122483 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 167 / 638445780553122650 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 191 / 638445780553122841 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 198 / 638445780553123039 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 179 / 638445780553123218 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 288 / 638445780553123506 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 204 / 638445780553123710 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 184 / 638445780553123894 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 127 / 638445780553124021 / Changed  ("file1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 43131 / 638445780553167152 / Changed  ("file2.txt",   Some                   │
│ "222222222222222222222222222222222                                           │
│ 206 / 638445780553167358 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 456 / 638445780553167814 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 31 / 638445780553167845 / Changed  ("file2.txt",   Some                      │
│ "222222222222222222222222222222222222                                        │
│ 172 / 638445780553168017 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 324 / 638445780553168341 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 239 / 638445780553168580 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 183 / 638445780553168763 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 155 / 638445780553168918 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 162 / 638445780553169080 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 173 / 638445780553169253 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 204 / 638445780553169457 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 171 / 638445780553169628 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 176 / 638445780553169804 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 152 / 638445780553169956 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 166 / 638445780553170122 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 172 / 638445780553170294 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 160 / 638445780553170454 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 176 / 638445780553170630 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 195 / 638445780553170825 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 171 / 638445780553170996 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 158 / 638445780553171154 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 163 / 638445780553171317 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 182 / 638445780553171499 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 182 / 638445780553171681 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 167 / 638445780553171848 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 202 / 638445780553172050 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 160 / 638445780553172210 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 162 / 638445780553172372 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 173 / 638445780553172545 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 159 / 638445780553172704 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 174 / 638445780553172878 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 174 / 638445780553173052 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 162 / 638445780553173214 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 366 / 638445780553173580 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 209 / 638445780553173789 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 204 / 638445780553173993 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 211 / 638445780553174204 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 170 / 638445780553174374 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 177 / 638445780553174551 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 200 / 638445780553174751 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 230 / 638445780553174981 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 199 / 638445780553175180 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 218 / 638445780553175398 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 286 / 638445780553175684 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 373 / 638445780553176057 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 194 / 638445780553176251 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 159 / 638445780553176410 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 158 / 638445780553176568 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 190 / 638445780553176758 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 148 / 638445780553176906 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 161 / 638445780553177067 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 155 / 638445780553177222 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 161 / 638445780553177383 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 177 / 638445780553177560 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 152 / 638445780553177712 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 176 / 638445780553177888 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 166 / 638445780553178054 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 150 / 638445780553178204 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 164 / 638445780553178368 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 157 / 638445780553178525 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 157 / 638445780553178682 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 155 / 638445780553178837 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 206 / 638445780553179043 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 143 / 638445780553179186 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 162 / 638445780553179348 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 179 / 638445780553179527 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 182 / 638445780553179709 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 185 / 638445780553179894 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 283 / 638445780553180177 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 199 / 638445780553180376 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 187 / 638445780553180563 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 165 / 638445780553180728 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 148 / 638445780553180876 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 172 / 638445780553181048 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 171 / 638445780553181219 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 162 / 638445780553181381 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 207 / 638445780553181588 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 171 / 638445780553181759 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 167 / 638445780553181926 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 180 / 638445780553182106 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 197 / 638445780553182303 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 199 / 638445780553182502 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 186 / 638445780553182688 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 199 / 638445780553182887 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 257 / 638445780553183144 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 197 / 638445780553183341 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 280 / 638445780553183621 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 192 / 638445780553183813 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 172 / 638445780553183985 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 220 / 638445780553184205 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 265 / 638445780553184470 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 209 / 638445780553184679 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 186 / 638445780553184865 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 196 / 638445780553185061 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 221 / 638445780553185282 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 204 / 638445780553185486 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 180 / 638445780553185666 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 174 / 638445780553185840 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 180 / 638445780553186020 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 649 / 638445780553186669 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 423 / 638445780553187092 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 210 / 638445780553187302 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 224 / 638445780553187526 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 201 / 638445780553187727 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 184 / 638445780553187911 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 181 / 638445780553188092 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 209 / 638445780553188301 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 196 / 638445780553188497 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 208 / 638445780553188705 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 215 / 638445780553188920 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 209 / 638445780553189129 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 201 / 638445780553189330 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 197 / 638445780553189527 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 224 / 638445780553189751 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 180 / 638445780553189931 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 193 / 638445780553190124 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 194 / 638445780553190318 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 229 / 638445780553190547 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 183 / 638445780553190730 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 185 / 638445780553190915 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 189 / 638445780553191104 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 199 / 638445780553191303 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 193 / 638445780553191496 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 144 / 638445780553191640 / Changed  ("file2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 15024055 / 638445780568215695 / Renamed  ("file1.txt",   ("file_1.txt",      │
│ Some      "1111111111                                                        │
│ 504 / 638445780568216199 / Renamed  ("file2.txt",   ("file_2.txt",    Some   │
│ "222222222222222                                                             │
│ 15049286 / 638445780583265485 / Changed  ("file_1.txt",   Some               │
│ "11111111111111111111111111111                                               │
│ 229 / 638445780583265714 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 3763 / 638445780583269477 / Changed  ("file_1.txt",   Some                   │
│ "111111111111111111111111111111111                                           │
│ 58 / 638445780583269535 / Changed  ("file_1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 260 / 638445780583269795 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 207 / 638445780583270002 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 26 / 638445780583270028 / Changed  ("file_1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 255 / 638445780583270283 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 152 / 638445780583270435 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 180 / 638445780583270615 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 46 / 638445780583270661 / Changed  ("file_1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 252 / 638445780583270913 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 127 / 638445780583271040 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 147 / 638445780583271187 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 177 / 638445780583271364 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 102 / 638445780583271466 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 250 / 638445780583271716 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 121 / 638445780583271837 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 214 / 638445780583272051 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 359 / 638445780583272410 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 103 / 638445780583272513 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 208 / 638445780583272721 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 179 / 638445780583272900 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 36 / 638445780583272936 / Changed  ("file_1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 229 / 638445780583273165 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 123 / 638445780583273288 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 220 / 638445780583273508 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 170 / 638445780583273678 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 103 / 638445780583273781 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 199 / 638445780583273980 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 122 / 638445780583274102 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 136 / 638445780583274238 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 142 / 638445780583274380 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 139 / 638445780583274519 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 133 / 638445780583274652 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 141 / 638445780583274793 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 146 / 638445780583274939 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 180 / 638445780583275119 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 95 / 638445780583275214 / Changed  ("file_1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 209 / 638445780583275423 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 112 / 638445780583275535 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 212 / 638445780583275747 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 124 / 638445780583275871 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 142 / 638445780583276013 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 134 / 638445780583276147 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 141 / 638445780583276288 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 134 / 638445780583276422 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 179 / 638445780583276601 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 208 / 638445780583276809 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 125 / 638445780583276934 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 170 / 638445780583277104 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 126 / 638445780583277230 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 127 / 638445780583277357 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 198 / 638445780583277555 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 150 / 638445780583277705 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 118 / 638445780583277823 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 192 / 638445780583278015 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 119 / 638445780583278134 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 116 / 638445780583278250 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 190 / 638445780583278440 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 118 / 638445780583278558 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 115 / 638445780583278673 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 196 / 638445780583278869 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 118 / 638445780583278987 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 188 / 638445780583279175 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 117 / 638445780583279292 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 159 / 638445780583279451 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 157 / 638445780583279608 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 116 / 638445780583279724 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 189 / 638445780583279913 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 153 / 638445780583280066 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 116 / 638445780583280182 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 188 / 638445780583280370 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 118 / 638445780583280488 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 117 / 638445780583280605 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 189 / 638445780583280794 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 118 / 638445780583280912 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 114 / 638445780583281026 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 199 / 638445780583281225 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 184 / 638445780583281409 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 117 / 638445780583281526 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 155 / 638445780583281681 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 187 / 638445780583281868 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 116 / 638445780583281984 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 121 / 638445780583282105 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 216 / 638445780583282321 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 155 / 638445780583282476 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 154 / 638445780583282630 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 157 / 638445780583282787 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 117 / 638445780583282904 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 117 / 638445780583283021 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 189 / 638445780583283210 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 114 / 638445780583283324 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 182 / 638445780583283506 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 115 / 638445780583283621 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 183 / 638445780583283804 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 116 / 638445780583283920 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 113 / 638445780583284033 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 180 / 638445780583284213 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 153 / 638445780583284366 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 75 / 638445780583284441 / Changed  ("file_1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 225 / 638445780583284666 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 155 / 638445780583284821 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 26 / 638445780583284847 / Changed  ("file_1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 212 / 638445780583285059 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 118 / 638445780583285177 / Changed  ("file_1.txt",   Some                    │
│ "1111111111111111111111111111111111                                          │
│ 25 / 638445780583285202 / Changed  ("file_1.txt",   Some                     │
│ "11111111111111111111111111111111111                                         │
│ 50426 / 638445780583335628 / Changed  ("file_2.txt",   Some                  │
│ "22222222222222222222222222222222                                            │
│ 127 / 638445780583335755 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 727 / 638445780583336482 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 396 / 638445780583336878 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 54306 / 638445780583391184 / Changed  ("file_2.txt",   Some                  │
│ "22222222222222222222222222222222                                            │
│ 90 / 638445780583391274 / Changed  ("file_2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 21462 / 638445780583412736 / Changed  ("file_2.txt",   Some                  │
│ "22222222222222222222222222222222                                            │
│ 72 / 638445780583412808 / Changed  ("file_2.txt",   Some                     │
│ "22222222222222222222222222222222222                                         │
│ 251 / 638445780583413059 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 192 / 638445780583413251 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 203 / 638445780583413454 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 198 / 638445780583413652 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 213 / 638445780583413865 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 228 / 638445780583414093 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 228 / 638445780583414321 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 200 / 638445780583414521 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 204 / 638445780583414725 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 207 / 638445780583414932 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 205 / 638445780583415137 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 202 / 638445780583415339 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 198 / 638445780583415537 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 226 / 638445780583415763 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 402 / 638445780583416165 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 239 / 638445780583416404 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 199 / 638445780583416603 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 203 / 638445780583416806 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 198 / 638445780583417004 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 200 / 638445780583417204 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 226 / 638445780583417430 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 186 / 638445780583417616 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 215 / 638445780583417831 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 190 / 638445780583418021 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 200 / 638445780583418221 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 197 / 638445780583418418 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 206 / 638445780583418624 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 190 / 638445780583418814 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 190 / 638445780583419004 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 162 / 638445780583419166 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 159 / 638445780583419325 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 158 / 638445780583419483 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 163 / 638445780583419646 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 168 / 638445780583419814 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 155 / 638445780583419969 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 189 / 638445780583420158 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 110 / 638445780583420268 / Changed  ("file_2.txt",   Some                    │
│ "2222222222222222222222222222222222                                          │
│ 15010438 / 638445780598430706 / Deleted "file_1.txt"                         │
│ 2638 / 638445780598433344 / Deleted "file_2.txt"                             │
│ FSharpList<FileSystemChange>                                                 │
│       - path: file1.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: 1a                                                          │
│         IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: True                                                      │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file1.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: 1a                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file2.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: 2a                                                          │
│         IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: True                                                      │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file2.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: 2a                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file1.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: 1b                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file2.txt                                                      │
│         content: FSharpOption<String>                                        │
│           Value: 2b                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - oldPath: file1.txt                                                   │
│         Item2:         - file_1.txt                                          │
│         - FSharpOption<String>                                               │
│             Value: 1b                                                        │
│       - IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: True                                                      │
│       - oldPath: file2.txt                                                   │
│         Item2:         - file_2.txt                                          │
│         - FSharpOption<String>                                               │
│             Value: 2b                                                        │
│       - IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: True                                                      │
│       - path: file_1.txt                                                     │
│         content: FSharpOption<String>                                        │
│           Value: 1c                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file_2.txt                                                     │
│         content: FSharpOption<String>                                        │
│           Value: 2c                                                          │
│         IsFailure: False                                                     │
│         IsChanged: True                                                      │
│         IsCreated: False                                                     │
│         IsDeleted: False                                                     │
│         IsRenamed: False                                                     │
│       - path: file_1.txt                                                     │
│         IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: False                                                     │
│         IsDeleted: True                                                      │
│         IsRenamed: False                                                     │
│       - path: file_2.txt                                                     │
│         IsFailure: False                                                     │
│         IsChanged: False                                                     │
│         IsCreated: False                                                     │
│         IsDeleted: True                                                      │
│         IsRenamed: False                                                     │
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### testEventsSorted (test)                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline sortEvent event =
    match event with
    | FileSystemChange.Failure _ -> 0
    | FileSystemChange.Created _ -> 1
    | FileSystemChange.Changed _ -> 2
    | FileSystemChange.Renamed (_oldPath, _) -> 3
    | FileSystemChange.Deleted _ -> 4

let inline formatEvents events =
    events
    |> Seq.toList
    |> List.sortBy (snd >> sortEvent)
    |> List.choose (fun (ticks, event) ->
        match event with
        | FileSystemChange.Failure _ ->
            None
        | FileSystemChange.Changed (path, _) ->
            Some (ticks, System.IO.Path.GetFileName path, nameof 
FileSystemChangeType.Changed)
        | FileSystemChange.Created (path, _) ->
            Some (ticks, System.IO.Path.GetFileName path, nameof 
FileSystemChangeType.Created)
        | FileSystemChange.Deleted path ->
            Some (ticks, System.IO.Path.GetFileName path, nameof 
FileSystemChangeType.Deleted)
        | FileSystemChange.Renamed (_oldPath, (path, _)) ->
            Some (ticks, System.IO.Path.GetFileName path, nameof 
FileSystemChangeType.Renamed)
    )
    |> List.sortBy (fun (_, path, _) -> path)
    |> List.distinctBy (fun (_, path, event) -> path, event)

let inline testEventsSorted
    (watchFn : string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> * 
IDisposable)
    write
    =
    let path = createTempDirectory ()
    let stream, disposable = watchFn path

    let events = System.Collections.Concurrent.ConcurrentBag ()

    let inline iter () =
        stream
        |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { 
events.Add event })

    let run = async {
        let! _ = iter () |> Async.StartChild
        do! Async.Sleep 250
        return! write path
    }

    try
        run
        |> Async.runWithTimeout 5000
        |> _equal (Some ())
    finally
        disposable.Dispose ()
        deleteDirectoryAsync path |> Async.Ignore |> Async.RunSynchronously

    let events = formatEvents events

    let eventMap =
        events
        |> List.map (fun (ticks, path, event) -> path, (event, ticks))
        |> List.groupBy fst
        |> List.map (fun (path, events) ->
            let event, _ticks =
                events
                |> List.map snd
                |> List.sortByDescending snd
                |> List.head

            path, event
        )
        |> Map.ofList

    let eventList =
        events
        |> List.map (fun (_ticks, path, event) -> path, event)

    eventMap, eventList

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ #### create and delete (test)                                                │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline write path = async {
    let n = 3

    for i = 1 to n do
        do! $"{i}" |> writeAllTextAsync (path </> $"file{i}.txt")

    for i = 1 to n do
        do! deleteFileAsync (path </> $"file{i}.txt") |> Async.Ignore

    do! Async.Sleep 150
}

let inline run () =
    let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
write

    [[
        "file1.txt", nameof FileSystemChangeType.Created
        "file1.txt", nameof FileSystemChangeType.Changed
        "file1.txt", nameof FileSystemChangeType.Deleted

        "file2.txt", nameof FileSystemChangeType.Created
        "file2.txt", nameof FileSystemChangeType.Changed
        "file2.txt", nameof FileSystemChangeType.Deleted

        "file3.txt", nameof FileSystemChangeType.Created
        "file3.txt", nameof FileSystemChangeType.Changed
        "file3.txt", nameof FileSystemChangeType.Deleted
    ]]
    |> _sequenceEqual eventList

    [[
        "file1.txt", nameof FileSystemChangeType.Deleted
        "file2.txt", nameof FileSystemChangeType.Deleted
        "file3.txt", nameof FileSystemChangeType.Deleted
    ]]
    |> Map.ofList
    |> _sequenceEqual eventMap

run
|> retryFn 3
|> _equal (Some ())

╭─[ 2.22s - stdout ]───────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│ 00:00:28 #51 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ FSharpList<Tuple<String,String>>                                             │
│ ( file1.txt, Created )                                                       │
│ ( file1.txt, Changed )                                                       │
│ ( file1.txt, Deleted )                                                       │
│ ( file2.txt, Created )                                                       │
│ ( file2.txt, Changed )                                                       │
│ ( file2.txt, Deleted )                                                       │
│ ( file3.txt, Created )                                                       │
│ ( file3.txt, Changed )                                                       │
│ ( file3.txt, Deleted )                                                       │
│ FSharpMap<String,String>                                                     │
│       - Key: file1.txt                                                       │
│         Value: Deleted                                                       │
│       - Key: file2.txt                                                       │
│         Value: Deleted                                                       │
│       - Key: file3.txt                                                       │
│         Value: Deleted                                                       │
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ #### change (test)                                                           │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline write path = async {
    let n = 2

    for i = 1 to n do
        do! $"{i}" |> writeAllTextAsync (path </> $"file{i}.txt")

    for i = 1 to n do
        do! "" |> writeAllTextAsync (path </> $"file{i}.txt")

    for i = 1 to n do
        do! deleteFileAsync (path </> $"file{i}.txt") |> Async.Ignore

    do! Async.Sleep 150
}

let inline run () =
    let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
write

    [[
        "file1.txt", nameof FileSystemChangeType.Created
        "file1.txt", nameof FileSystemChangeType.Changed
        "file1.txt", nameof FileSystemChangeType.Deleted

        "file2.txt", nameof FileSystemChangeType.Created
        "file2.txt", nameof FileSystemChangeType.Changed
        "file2.txt", nameof FileSystemChangeType.Deleted
    ]]
    |> _sequenceEqual eventList

    [[
        "file1.txt", nameof FileSystemChangeType.Deleted
        "file2.txt", nameof FileSystemChangeType.Deleted
    ]]
    |> Map.ofList
    |> _sequenceEqual eventMap

run
|> retryFn 3
|> _equal (Some ())

╭─[ 2.38s - stdout ]───────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│ 00:00:31 #52 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ FSharpList<Tuple<String,String>>                                             │
│ ( file1.txt, Created )                                                       │
│ ( file1.txt, Changed )                                                       │
│ ( file1.txt, Deleted )                                                       │
│ ( file2.txt, Created )                                                       │
│ ( file2.txt, Changed )                                                       │
│ ( file2.txt, Deleted )                                                       │
│ FSharpMap<String,String>                                                     │
│       - Key: file1.txt                                                       │
│         Value: Deleted                                                       │
│       - Key: file2.txt                                                       │
│         Value: Deleted                                                       │
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ #### rename (test)                                                           │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline write path = async {
    let n = 2

    for i = 1 to n do
        do! $"{i}" |> writeAllTextAsync (path </> $"file{i}.txt")

    for i = 1 to n do
        do! path </> $"file{i}.txt" |> moveFileAsync (path </> $"file_{i}.txt") 
|> Async.Ignore

    for i = 1 to n do
        do! deleteFileAsync (path </> $"file_{i}.txt") |> Async.Ignore

    do! Async.Sleep 150
}

let inline run () =
    let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
write

    [[
        "file1.txt", nameof FileSystemChangeType.Created
        "file1.txt", nameof FileSystemChangeType.Changed
        "file2.txt", nameof FileSystemChangeType.Created
        "file2.txt", nameof FileSystemChangeType.Changed

        "file_1.txt", nameof FileSystemChangeType.Renamed
        "file_1.txt", nameof FileSystemChangeType.Deleted

        "file_2.txt", nameof FileSystemChangeType.Renamed
        "file_2.txt", nameof FileSystemChangeType.Deleted
    ]]
    |> _sequenceEqual eventList

    [[
        "file1.txt", nameof FileSystemChangeType.Changed
        "file2.txt", nameof FileSystemChangeType.Changed
        "file_1.txt", nameof FileSystemChangeType.Deleted
        "file_2.txt", nameof FileSystemChangeType.Deleted
    ]]
    |> Map.ofList
    |> _sequenceEqual eventMap

run
|> retryFn 3
|> _equal (Some ())

╭─[ 2.82s - stdout ]───────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│ 00:00:34 #53 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ FSharpList<Tuple<String,String>>                                             │
│ ( file1.txt, Created )                                                       │
│ ( file1.txt, Changed )                                                       │
│ ( file2.txt, Created )                                                       │
│ ( file2.txt, Changed )                                                       │
│ ( file_1.txt, Renamed )                                                      │
│ ( file_1.txt, Deleted )                                                      │
│ ( file_2.txt, Renamed )                                                      │
│ ( file_2.txt, Deleted )                                                      │
│ FSharpMap<String,String>                                                     │
│       - Key: file1.txt                                                       │
│         Value: Changed                                                       │
│       - Key: file2.txt                                                       │
│         Value: Changed                                                       │
│       - Key: file_1.txt                                                      │
│         Value: Deleted                                                       │
│       - Key: file_2.txt                                                      │
│         Value: Deleted                                                       │
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ #### full (test)                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline write path = async {
    let n = 2

    for i = 1 to n do
        do! $"{i}" |> writeAllTextAsync (path </> $"file{i}.txt")

    for i = 1 to n do
        do! "" |> writeAllTextAsync (path </> $"file{i}.txt")

    for i = 1 to n do
        do! path </> $"file{i}.txt" |> moveFileAsync (path </> $"file_{i}.txt") 
|> Async.Ignore

    for i = 1 to n do
        do! $"{i}" |> writeAllTextAsync (path </> $"file_{i}.txt")

    for i = 1 to n do
        do! deleteFileAsync (path </> $"file_{i}.txt") |> Async.Ignore

    do! Async.Sleep 150
}

let inline run () =
    let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
write

    [[
        "file1.txt", nameof FileSystemChangeType.Created
        "file1.txt", nameof FileSystemChangeType.Changed
        "file2.txt", nameof FileSystemChangeType.Created
        "file2.txt", nameof FileSystemChangeType.Changed

        "file_1.txt", nameof FileSystemChangeType.Changed
        "file_1.txt", nameof FileSystemChangeType.Renamed
        "file_1.txt", nameof FileSystemChangeType.Deleted

        "file_2.txt", nameof FileSystemChangeType.Changed
        "file_2.txt", nameof FileSystemChangeType.Renamed
        "file_2.txt", nameof FileSystemChangeType.Deleted
    ]]
    |> _sequenceEqual eventList

    [[
        "file1.txt", nameof FileSystemChangeType.Changed
        "file2.txt", nameof FileSystemChangeType.Changed
        "file_1.txt", nameof FileSystemChangeType.Deleted
        "file_2.txt", nameof FileSystemChangeType.Deleted
    ]]
    |> Map.ofList
    |> _sequenceEqual eventMap

run
|> retryFn 3
|> _equal (Some ())

╭─[ 3.24s - stdout ]───────────────────────────────────────────────────────────╮
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│ 00:00:37 #54 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ FSharpList<Tuple<String,String>>                                             │
│ ( file1.txt, Created )                                                       │
│ ( file1.txt, Changed )                                                       │
│ ( file2.txt, Created )                                                       │
│ ( file2.txt, Changed )                                                       │
│ ( file_1.txt, Changed )                                                      │
│ ( file_1.txt, Renamed )                                                      │
│ ( file_1.txt, Deleted )                                                      │
│ ( file_2.txt, Changed )                                                      │
│ ( file_2.txt, Renamed )                                                      │
│ ( file_2.txt, Deleted )                                                      │
│ FSharpMap<String,String>                                                     │
│       - Key: file1.txt                                                       │
│         Value: Changed                                                       │
│       - Key: file2.txt                                                       │
│         Value: Changed                                                       │
│       - Key: file_1.txt                                                      │
│         Value: Deleted                                                       │
│       - Key: file_2.txt                                                      │
│         Value: Deleted                                                       │
│ FSharpOption<Unit>                                                           │
│       Value: <null>                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook FileSystem.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 522806 bytes to FileSystem.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Networking (Polyglot)                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
b/net6.0/System.CommandLine.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/CommonFSharp.fs
#!import ../../lib/fsharp/Async.fs
#!import ../../lib/fsharp/Runtime.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module CommonFSharp =

    open Common

    /// ## getUnionCaseName

    let inline getUnionCaseName<'T> (x: 'T) =
        match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
        | case, _ -> case.Name


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Runtime =

    open Common

    /// ## isWindows

    let isWindows =
        fun () ->
            System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
                System.Runtime.InteropServices.OSPlatform.Windows
        |> memoize

    /// ## getExecutableSuffix

    let inline getExecutableSuffix () =
        if isWindows ()
        then ".exe"
        else ""

    /// ## splitCommand

    type private CommandParseStep =
        | Start
        | Path of quoted: bool
        | Arguments

    let splitCommand (command: string) =
        let rec loop (path, args) chars step =
            match chars, step with
            | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## testPortOpen                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline testPortOpen port = async {
    let! ct = Async.CancellationToken
    use client = new System.Net.Sockets.TcpClient ()
    try
        do! client.ConnectAsync ("127.0.0.1", port, ct) |> 
Async.awaitValueTaskUnit
        return true
    with ex ->
        trace Verbose (fun () -> $"testPortOpen / ex: {ex |> printException}") 
getLocals
        return false
}

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

testPortOpen 65536
|> Async.runWithTimeout 120
|> _equal (Some false)

╭─[ 123.90ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Verbose] testPortOpen / ex: System.ArgumentOutOfRangeException: │
│ Specified argument was out of the range of valid values. (Parameter 'port')  │
│ FSharpOption<Boolean>                                                        │
│       Value: False                                                           │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline testPortOpenTimeout timeout port = async {
    let! result =
        testPortOpen port
        |> Async.runWithTimeoutAsync timeout
    return
        match result with
        | None -> false
        | Some result -> result
}

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

testPortOpenTimeout 120 65535
|> Async.RunSynchronously
|> _equal false

╭─[ 86.77ms - stdout ]─────────────────────────────────────────────────────────╮
│ 00:00:00 #2 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ False                                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## waitForPortAccess                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline waitForPortAccess timeout status port =
    let rec loop retry = async {
        let! isPortOpen =
            match timeout with
            | None -> testPortOpen port
            | Some timeout -> testPortOpenTimeout timeout port
        if isPortOpen = status
        then return retry
        else
            if retry % 100 = 0 then
                let getLocals () = $"port: {port} / retry: {retry} / {getLocals 
()}"
                trace Verbose (fun () -> "waitForPortAccess") getLocals
            do! Async.Sleep 10
            return! loop (retry + 1)
    }
    loop 0

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let port = 5555

let inline lockPort () = async {
    trace Debug (fun () -> "_1") getLocals
    do! Async.Sleep 5000
    use listener = new System.Net.Sockets.TcpListener 
(System.Net.IPAddress.Parse "127.0.0.1", port)
    trace Debug (fun () -> "_2") getLocals
    listener.Start ()
    trace Debug (fun () -> "_3") getLocals
    do! Async.Sleep 2000
    trace Debug (fun () -> "_4") getLocals
    listener.Stop ()
    trace Debug (fun () -> "_5") getLocals
}

async {
    trace Debug (fun () -> "1") getLocals
    let! child = lockPort () |> Async.StartChild
    trace Debug (fun () -> "2") getLocals
    do! Async.Sleep 1
    trace Debug (fun () -> "3") getLocals
    let! retries1 = waitForPortAccess None true port
    trace Debug (fun () -> "4") getLocals
    let! retries2 = waitForPortAccess None false port
    trace Debug (fun () -> "5") getLocals
    do! child
    trace Debug (fun () -> "6") getLocals
    return retries1, retries2
}
|> Async.runWithTimeout 20000
|> function
    | Some (retries1, retries2) ->
        retries1
        |> _isBetween
            (if Runtime.isWindows () then 2 else 2)
            (if Runtime.isWindows () then 5 else 1500)

        retries2
        |> _isBetween
            (if Runtime.isWindows () then 80 else 80)
            (if Runtime.isWindows () then 150 else 600)

        true
    | _ -> false
|> _equal true

╭─[ 7.33s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:00 #3 [Debug] 1                                                        │
│ 00:00:00 #4 [Debug] _1                                                       │
│ 00:00:00 #5 [Debug] 2                                                        │
│ 00:00:00 #6 [Debug] 3                                                        │
│ 00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #8 [Verbose] waitForPortAccess / port: 5555 / retry: 0              │
│ 00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #17 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #18 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #19 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #20 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #21 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #22 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #23 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #24 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #25 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #26 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #27 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #28 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #29 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #30 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #31 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #32 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #33 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #34 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #35 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #36 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #37 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #38 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #39 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #40 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #41 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #42 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #43 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #44 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #45 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #46 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #47 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #48 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #49 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #50 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #51 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #52 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #53 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #54 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #55 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #56 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #57 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #58 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #59 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #60 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #61 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #62 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #63 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #64 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #65 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #66 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #67 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #68 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #69 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #70 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #71 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #72 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #73 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #74 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #75 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #76 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #77 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #78 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #79 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #80 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #81 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #82 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #83 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #84 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #85 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #86 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #87 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #88 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #89 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #90 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #91 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #92 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #93 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #94 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #95 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #96 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #97 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #98 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #99 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #100 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #101 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #102 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #103 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #104 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #105 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #106 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #107 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #108 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #109 [Verbose] waitForPortAccess / port: 5555 / retry: 100          │
│ 00:00:01 #110 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #111 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #112 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #113 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #114 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #115 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #116 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #117 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:01 #118 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #119 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #120 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #121 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #122 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #123 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #124 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #125 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #126 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #127 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #128 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #129 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #130 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #131 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #132 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #133 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #134 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #135 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #136 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #137 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #138 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #139 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #140 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #141 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #142 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #143 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #144 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #145 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #146 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #147 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #148 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #149 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #150 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #151 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #152 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #153 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #154 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #155 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #156 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #157 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #158 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #159 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #160 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #161 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #162 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #163 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #164 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #165 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #166 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #167 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #168 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #169 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #170 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #171 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #172 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #173 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #174 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #175 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #176 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #177 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #178 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #179 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #180 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #181 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #182 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #183 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #184 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #185 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #186 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #187 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #188 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #189 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #190 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #191 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #192 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #193 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #194 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #195 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #196 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #197 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #198 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #199 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #200 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #201 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #202 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #203 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #204 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #205 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #206 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #207 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #208 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #209 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #210 [Verbose] waitForPortAccess / port: 5555 / retry: 200          │
│ 00:00:03 #211 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #212 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #213 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #214 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #215 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #216 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #217 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #218 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #219 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #220 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #221 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #222 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #223 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #224 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #225 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #226 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #227 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #228 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #229 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #230 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #231 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #232 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #233 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #234 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #235 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #236 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #237 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #238 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #239 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #240 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #241 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #242 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #243 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #244 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #245 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #246 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #247 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #248 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #249 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #250 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #251 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #252 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #253 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #254 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #255 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #256 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #257 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #258 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #259 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #260 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #261 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #262 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #263 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #264 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #265 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #266 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #267 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #268 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #269 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #270 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #271 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #272 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #273 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #274 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #275 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #276 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #277 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #278 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #279 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #280 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #281 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #282 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #283 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #284 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #285 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:03 #286 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #287 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #288 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #289 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #290 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #291 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #292 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #293 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #294 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #295 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #296 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #297 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #298 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #299 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #300 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #301 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #302 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #303 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #304 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #305 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #306 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #307 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #308 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #309 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #310 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #311 [Verbose] waitForPortAccess / port: 5555 / retry: 300          │
│ 00:00:04 #312 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #313 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #314 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #315 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #316 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #317 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #318 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #319 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #320 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #321 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #322 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #323 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #324 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #325 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #326 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #327 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #328 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #329 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #330 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #331 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #332 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #333 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #334 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #335 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #336 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #337 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #338 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #339 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #340 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #341 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #342 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #343 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #344 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #345 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #346 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #347 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #348 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #349 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #350 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #351 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #352 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #353 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #354 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #355 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #356 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #357 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #358 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #359 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #360 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #361 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #362 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #363 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #364 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #365 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #366 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #367 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #368 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #369 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:04 #370 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #371 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #372 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #373 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #374 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #375 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #376 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #377 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #378 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #379 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #380 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #381 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #382 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #383 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #384 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #385 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #386 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #387 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #388 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #389 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #390 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #391 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #392 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #393 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #394 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #395 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #396 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #397 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #398 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #399 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #400 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #401 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #402 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #403 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #404 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #405 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #406 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #407 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #408 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #409 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #410 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #411 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #412 [Verbose] waitForPortAccess / port: 5555 / retry: 400          │
│ 00:00:05 #413 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #414 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #415 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #416 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #417 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #418 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #419 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #420 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #421 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #422 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #423 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #424 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #425 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #426 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #427 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:05 #428 [Debug] _2                                                     │
│ 00:00:05 #429 [Debug] _3                                                     │
│ 00:00:05 #430 [Debug] 4                                                      │
│ 00:00:05 #431 [Verbose] waitForPortAccess / port: 5555 / retry: 0            │
│ 00:00:06 #432 [Verbose] waitForPortAccess / port: 5555 / retry: 100          │
│ 00:00:07 #433 [Debug] _4                                                     │
│ 00:00:07 #434 [Debug] _5                                                     │
│ 00:00:07 #435 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:07 #436 [Debug] 5                                                      │
│ 00:00:07 #437 [Debug] 6                                                      │
│ 416                                                                          │
│ 416                                                                          │
│ 416                                                                          │
│ 167                                                                          │
│ 167                                                                          │
│ 167                                                                          │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let port = 5555

let inline lockPort () = async {
    trace Debug (fun () -> "_1") getLocals
    do! Async.Sleep 500
    use listener = new System.Net.Sockets.TcpListener 
(System.Net.IPAddress.Parse "127.0.0.1", port)
    trace Debug (fun () -> "_2") getLocals
    listener.Start ()
    trace Debug (fun () -> "_3") getLocals
    do! Async.Sleep 200
    trace Debug (fun () -> "_4") getLocals
    listener.Stop ()
    trace Debug (fun () -> "_5") getLocals
}

async {
    trace Debug (fun () -> "1") getLocals
    let! child = lockPort () |> Async.StartChild
    trace Debug (fun () -> "2") getLocals
    do! Async.Sleep 1
    trace Debug (fun () -> "3") getLocals
    let! retries1 = waitForPortAccess (Some 60) true port
    trace Debug (fun () -> "4") getLocals
    let! retries2 = waitForPortAccess (Some 60) false port
    trace Debug (fun () -> "5") getLocals
    do! child
    trace Debug (fun () -> "6") getLocals
    return retries1, retries2
}
|> Async.runWithTimeout 2000
|> function
    | Some (retries1, retries2) ->
        retries1
        |> _isBetween
            (if Runtime.isWindows () then 4 else 2)
            (if Runtime.isWindows () then 15 else 150)

        retries2
        |> _isBetween
            (if Runtime.isWindows () then 5 else 0)
            (if Runtime.isWindows () then 20 else 60)

        true
    | _ -> false
|> _equal true

╭─[ 1.22s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:08 #438 [Debug] 1                                                      │
│ 00:00:08 #439 [Debug] 2                                                      │
│ 00:00:08 #440 [Debug] _1                                                     │
│ 00:00:08 #441 [Debug] 3                                                      │
│ 00:00:08 #442 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #443 [Verbose] waitForPortAccess / port: 5555 / retry: 0            │
│ 00:00:08 #444 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #445 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #446 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #447 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #448 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #449 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #450 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #451 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #452 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #453 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #454 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #455 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #456 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #457 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #458 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #459 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #460 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #461 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #462 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #463 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #464 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #465 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #466 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #467 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #468 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #469 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #470 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #471 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #472 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #473 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #474 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #475 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #476 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #477 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #478 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #479 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #480 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #481 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #482 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:08 #483 [Debug] _2                                                     │
│ 00:00:08 #484 [Debug] _3                                                     │
│ 00:00:08 #485 [Debug] 4                                                      │
│ 00:00:08 #486 [Verbose] waitForPortAccess / port: 5555 / retry: 0            │
│ 00:00:09 #487 [Debug] _4                                                     │
│ 00:00:09 #488 [Debug] _5                                                     │
│ 00:00:09 #489 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:09 #490 [Debug] 5                                                      │
│ 00:00:09 #491 [Debug] 6                                                      │
│ 40                                                                           │
│ 40                                                                           │
│ 40                                                                           │
│ 16                                                                           │
│ 16                                                                           │
│ 16                                                                           │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## getAvailablePort                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getAvailablePort timeout initialPort =
    let rec loop port = async {
        let! isPortOpen =
            match timeout with
            | None -> testPortOpen port
            | Some timeout -> testPortOpenTimeout timeout port
        if not isPortOpen
        then return port
        else return! loop (port + 1)
    }
    loop initialPort

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let port = 5555

let inline lockPorts () = async {
    trace Debug (fun () -> "_1") getLocals
    use listener1 = new System.Net.Sockets.TcpListener 
(System.Net.IPAddress.Parse "127.0.0.1", port)
    use listener2 = new System.Net.Sockets.TcpListener 
(System.Net.IPAddress.Parse "127.0.0.1", port + 1)
    trace Debug (fun () -> "_2") getLocals
    listener1.Start ()
    listener2.Start ()
    trace Debug (fun () -> "_3") getLocals
    do! Async.Sleep 4000
    trace Debug (fun () -> "_4") getLocals
    listener1.Stop ()
    listener2.Stop ()
    trace Debug (fun () -> "_5") getLocals
}

async {
    trace Debug (fun () -> "1") getLocals
    let! child = lockPorts () |> Async.StartChild
    trace Debug (fun () -> "2") getLocals
    do! Async.Sleep 240
    trace Debug (fun () -> "3") getLocals
    let! availablePort = getAvailablePort None port
    trace Debug (fun () -> "4") getLocals
    let! retries = waitForPortAccess None false port
    trace Debug (fun () -> "5") getLocals
    do! child
    trace Debug (fun () -> "6") getLocals
    return availablePort, retries
}
|> Async.runWithTimeout 15000
|> function
    | Some (availablePort, retries) ->
        availablePort |> _equal (port + 2)

        retries
        |> _isBetween
            (if Runtime.isWindows () then 100 else 100)
            (if Runtime.isWindows () then 150 else 1200)

        true
    | _ -> false
|> _equal true

╭─[ 4.32s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:09 #492 [Debug] 1                                                      │
│ 00:00:09 #493 [Debug] 2                                                      │
│ 00:00:09 #494 [Debug] _1                                                     │
│ 00:00:09 #495 [Debug] _2                                                     │
│ 00:00:09 #496 [Debug] _3                                                     │
│ 00:00:09 #497 [Debug] 3                                                      │
│ 00:00:09 #498 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:09 #499 [Debug] 4                                                      │
│ 00:00:09 #500 [Verbose] waitForPortAccess / port: 5555 / retry: 0            │
│ 00:00:10 #501 [Verbose] waitForPortAccess / port: 5555 / retry: 100          │
│ 00:00:12 #502 [Verbose] waitForPortAccess / port: 5555 / retry: 200          │
│ 00:00:13 #503 [Verbose] waitForPortAccess / port: 5555 / retry: 300          │
│ 00:00:13 #504 [Debug] _4                                                     │
│ 00:00:13 #505 [Debug] _5                                                     │
│ 00:00:13 #506 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #507 [Debug] 5                                                      │
│ 00:00:13 #508 [Debug] 6                                                      │
│ 5557                                                                         │
│ 313                                                                          │
│ 313                                                                          │
│ 313                                                                          │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let port = 5555

let inline lockPorts () = async {
    trace Debug (fun () -> "_1") getLocals
    use listener1 = new System.Net.Sockets.TcpListener 
(System.Net.IPAddress.Parse "127.0.0.1", port)
    use listener2 = new System.Net.Sockets.TcpListener 
(System.Net.IPAddress.Parse "127.0.0.1", port + 1)
    trace Debug (fun () -> "_2") getLocals
    listener1.Start ()
    listener2.Start ()
    trace Debug (fun () -> "_3") getLocals
    do! Async.Sleep 400
    trace Debug (fun () -> "_4") getLocals
    listener1.Stop ()
    listener2.Stop ()
    trace Debug (fun () -> "_5") getLocals
}

async {
    trace Debug (fun () -> "1") getLocals
    let! child = lockPorts () |> Async.StartChild
    trace Debug (fun () -> "2") getLocals
    do! Async.Sleep 240
    trace Debug (fun () -> "3") getLocals
    let! availablePort = getAvailablePort (Some 60) port
    trace Debug (fun () -> "4") getLocals
    let! retries = waitForPortAccess (Some 60) false port
    trace Debug (fun () -> "5") getLocals
    do! child
    trace Debug (fun () -> "6") getLocals
    return availablePort, retries
}
|> Async.runWithTimeout 1500
|> function
    | Some (availablePort, retries) ->
        availablePort |> _equal (port + 2)

        retries
        |> _isBetween
            (if Runtime.isWindows () then 2 else 1)
            (if Runtime.isWindows () then 10 else 120)

        true
    | _ -> false
|> _equal true

╭─[ 730.81ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:13 #509 [Debug] 1                                                      │
│ 00:00:13 #511 [Debug] 2                                                      │
│ 00:00:13 #510 [Debug] _1                                                     │
│ 00:00:13 #512 [Debug] _2                                                     │
│ 00:00:13 #513 [Debug] _3                                                     │
│ 00:00:14 #514 [Debug] 3                                                      │
│ 00:00:14 #515 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:14 #516 [Debug] 4                                                      │
│ 00:00:14 #517 [Verbose] waitForPortAccess / port: 5555 / retry: 0            │
│ 00:00:14 #518 [Debug] _4                                                     │
│ 00:00:14 #519 [Debug] _5                                                     │
│ 00:00:14 #520 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:14 #521 [Debug] 5                                                      │
│ 00:00:14 #522 [Debug] 6                                                      │
│ 5557                                                                         │
│ 13                                                                           │
│ 13                                                                           │
│ 13                                                                           │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook Networking.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 379539 bytes to Networking.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Runtime (Polyglot)                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
b/net6.0/System.CommandLine.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/CommonFSharp.fs
#!import ../../lib/fsharp/Async.fs
#!import ../../lib/fsharp/AsyncSeq.fs
#!import ../../lib/fsharp/Runtime.fs
#!import ../../lib/fsharp/FileSystem.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module CommonFSharp =

    open Common

    /// ## getUnionCaseName

    let inline getUnionCaseName<'T> (x: 'T) =
        match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
        | case, _ -> case.Name


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module AsyncSeq =

    open Common

    /// ## subscribeEvent

    let inline subscribeEvent (event: IEvent<'H, 'A>) map =
        let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 
'A>(event.AddHandler, event.RemoveHandler)
        System.Reactive.Linq.Observable.Select (observable, fun event -> map 
event.EventArgs)
        |> FSharp.Control.AsyncSeq.ofObservableBuffered

    let subscribeToken (token : System.Threading.CancellationToken) =
        let tcs = new System.Threading.Tasks.TaskCompletionSource ()
        System.Action tcs.SetResult |> token.Register |> ignore
        let start = System.DateTime.Now.Ticks
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun (...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Runtime =

    open Common

    /// ## isWindows

    let isWindows =
        fun () ->
            System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
                System.Runtime.InteropServices.OSPlatform.Windows
        |> memoize

    /// ## getExecutableSuffix

    let inline getExecutableSuffix () =
        if isWindows ()
        then ".exe"
        else ""

    /// ## splitCommand

    type private CommandParseStep =
        | Start
        | Path of quoted: bool
        | Arguments

    let splitCommand (command: string) =
        let rec loop (path, args) chars step =
            match chars, step with
            | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module FileSystem =

    open Common

    /// ## Operators

    module Operators =
        let inline (</>) a b =
            System.IO.Path.Combine (a, b)

    open Operators

    /// ## createTempDirectoryName

    let inline createTempDirectoryName () =
        let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name

        System.IO.Path.GetTempPath ()
        </> $"!{root}"
        </> string (newGuidFromDateTime System.DateTime.Now)

    /// ## createTempDirectory

    let inline createTempDirectory () =
        let tempFolder = createTempDirectoryName ()
        let result = System.IO.Directory.CreateDirectory tempFolder

        if not result.Exists then
            let ge...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

open FileSystem.Operators

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## isWindows                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let isWindows =
    fun () ->
        System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
            System.Runtime.InteropServices.OSPlatform.Windows
    |> memoize

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

isWindows ()

╭─[ 54.41ms - return value ]───────────────────────────────────────────────────╮
│ <div class="dni-plaintext"><pre>False</pre></div><style>                     │
│ .dni-code-hint {                                                             │
│     font-style: italic;                                                      │
│     overflow: hidden;                                                        │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview {                                                              │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview td {                                                           │
│     vertical-align: top;                                                     │
│     text-align: start;                                                       │
│ }                                                                            │
│ details.dni-treeview {                                                       │
│     padding-left: 1em;                                                       │
│ }                                                                            │
│ table td {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ table tr {                                                                   │
│     vertical-align: top;                                                     │
│     margin: 0em 0px;                                                         │
│ }                                                                            │
│ table tr td pre                                                              │
│ {                                                                            │
│     vertical-align: top !important;                                          │
│     margin: 0em 0px !important;                                              │
│ }                                                                            │
│ table th {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ </style>                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## getExecutableSuffix                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getExecutableSuffix () =
    if isWindows ()
    then ".exe"
    else ""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

getExecutableSuffix ()


── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## splitCommand                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type private CommandParseStep =
    | Start
    | Path of quoted: bool
    | Arguments

let splitCommand (command: string) =
    let rec loop (path, args) chars step =
        match chars, step with
        | ('"' | '\'') :: tail, _ when path = "" -> loop (path, args) tail (Path
true)
        | ('"' | '\'') :: tail, Path true -> loop (path, args) tail (Path false)
        | ' ' :: tail, Path true -> loop ($"{path} ", args) tail (Path true)
        | ' ' :: tail, (Start | Path _) -> loop (path, args) tail Arguments
        | char :: tail, Arguments -> loop (path, $"{args}{char}") tail Arguments
        | char :: tail, _ -> loop ($"{path}{char}", args) tail step
        | _, _ -> path |> String.replace @"\" "/", args
    loop ("", "") (command |> Seq.toList) Start

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

splitCommand ""
|> _equal ("", "")

splitCommand "/a/b/c"
|> _equal ("/a/b/c", "")

splitCommand "cat file.txt"
|> _equal ("cat", "file.txt")

splitCommand """..\..\file.exe file1.txt file2.txt"""
|> _equal ("../../file.exe", "file1.txt file2.txt")

splitCommand @"c:\dir\file.exe ""file1.txt file2.txt"""
|> _equal ("c:/dir/file.exe", @"""file1.txt file2.txt""")

splitCommand @"""..\..\dir name\file.exe"" ""file 1.txt"" file2.txt"
|> _equal ("../../dir name/file.exe", @"""file 1.txt"" file2.txt")

splitCommand @"""..\..\file 1.exe"" -c \\""echo 1\\"""
|> _equal ("../../file 1.exe", @"-c \\""echo 1\\""")

splitCommand @"..\..\file 1.exe -c \\""echo 1\\"""
|> _equal ("../../file", @"1.exe -c \\""echo 1\\""")

╭─[ 49.99ms - stdout ]─────────────────────────────────────────────────────────╮
│ ( ,  )                                                                       │
│ ( /a/b/c,  )                                                                 │
│ ( cat, file.txt )                                                            │
│ ( ../../file.exe, file1.txt file2.txt )                                      │
│ ( c:/dir/file.exe, "file1.txt file2.txt" )                                   │
│ ( ../../dir name/file.exe, "file 1.txt" file2.txt )                          │
│ ( ../../file 1.exe, -c \\"echo 1\\" )                                        │
│ ( ../../file, 1.exe -c \\"echo 1\\" )                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## executeAsync                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type ExecutionLine =
    {
        ProcessId : int
        Line : string
        Error : bool
    }

type ExecutionOptions =
    {
        Command : string
        WorkingDirectory : string option
        CancellationToken : System.Threading.CancellationToken option
        OnLine : (ExecutionLine -> Async<unit>) option
    }

let inline executeWithOptionsAsync (options : ExecutionOptions) = async {
    let fileName, arguments = options.Command |> splitCommand
    let workingDirectory = options.WorkingDirectory |> Option.defaultValue ""

    trace Debug (fun () -> $"executeAsync / options: {options}") getLocals

    let startInfo = System.Diagnostics.ProcessStartInfo (
        Arguments = arguments,
        CreateNoWindow = true,
        FileName = fileName,
        RedirectStandardError = true,
        RedirectStandardOutput = true,
        StandardOutputEncoding = System.Text.Encoding.UTF8,
        UseShellExecute = false,
        WorkingDirectory = workingDirectory
    )

    use proc = new System.Diagnostics.Process (StartInfo = startInfo)
    let output = System.Collections.Concurrent.ConcurrentStack<string> ()

    let inline event error (e: System.Diagnostics.DataReceivedEventArgs) = async
{
        if e.Data <> null then
            match options.OnLine with
            | Some onLine ->
                do!
                    onLine
                        {
                            ProcessId = proc.Id
                            Line = e.Data
                            Error = error
                        }
            | None -> ()

            trace
                Verbose
                (fun () -> $"> {e.Data}")
                Common.getLocals

            output.Push
                $"{
                    if error then '[['.ToString() else System.String.Empty
                }{
                    e.Data
                }{
                    if error then ']]'.ToString() else System.String.Empty
                }"
    }

    proc.OutputDataReceived.Add (event false >> Async.StartImmediate)
    proc.ErrorDataReceived.Add (event true >> Async.StartImmediate)

    if proc.Start () |> not
    then failwith $"executeAsync / proc.Start () error"

    proc.BeginErrorReadLine ()
    proc.BeginOutputReadLine ()

    let! ct =
        options.CancellationToken
        |> Option.defaultValue System.Threading.CancellationToken.None
        |> Async.mergeCancellationTokenWithDefaultAsync

    use reg = ct.Register (fun _ ->
        if not proc.HasExited then proc.Kill ()
    )

    let! exitCode = async {
        try
            do! proc.WaitForExitAsync ct |> Async.AwaitTask
            return proc.ExitCode
        with :? System.Threading.Tasks.TaskCanceledException as ex ->
            trace Warning (fun () -> $"executeAsync / WaitForExitAsync / ex: {ex
|> printException}") getLocals
            ex |> printException |> output.Push
            return System.Int32.MinValue
    }

    let output = output |> Seq.rev |> String.concat "\n"

    trace Debug (fun () ->
        $"executeAsync / exitCode: {exitCode} / output.Length: {output.Length}"
    ) getLocals

    return exitCode, output
}

let inline executeAsync command =
    executeWithOptionsAsync
        {
            Command = command
            CancellationToken = None
            OnLine = None
            WorkingDirectory = None
        }

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tempFolder = FileSystem.createTempDirectory ()
let fileName = "test.txt"
let path = tempFolder </> fileName

async {
    let! exitCode, result = executeAsync @$"pwsh -c ""Get-Content {path}"""
    exitCode |> _equal 1
    result |> _stringContains "not exist"

    do! "0" |> FileSystem.writeAllTextAsync path

    return!
        executeWithOptionsAsync
            {
                Command = @$"pwsh -c ""Get-Content {fileName}"""
                CancellationToken = None
                OnLine = None
                WorkingDirectory = Some tempFolder
            }

}
|> Async.runWithTimeout 10000
|> function
    | Some (exitCode, output) ->
        exitCode |> _equal 0
        output |> _equal "0"

        true
    | _ -> false
|> _equal true

╭─[ 1.49s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Debug] executeAsync / options: { Command =                      │
│    "pwsh -c "Get-Content                                                     │
│ /tmp/!dotnet-repl/20240226-2101-4865-6588-65fdf3734851/test.txt""            │
│   WorkingDirectory = None                                                    │
│   CancellationToken = None                                                   │
│   OnLine = None }                                                            │
│ 00:00:00 #2 [Verbose] > Get-Content: Cannot find path              │
│ '/tmp/!dotnet-repl/20240226-2101-4865-6588-65fdf3734851/test.txt' because it │
│ does not exist.                                                            │
│ 00:00:00 #3 [Debug] executeAsync / exitCode: 1 / output.Length: 142          │
│ 1                                                                            │
│ [Get-Content: Cannot find path                                     │
│ '/tmp/!dotnet-repl/20240226-2101-4865-6588-65fdf3734851/test.txt' because it │
│ does not exist.]                                                           │
│ 00:00:00 #4 [Debug] executeAsync / options: { Command = "pwsh -c             │
│ "Get-Content test.txt""                                                      │
│   WorkingDirectory =                                                         │
│    Some "/tmp/!dotnet-repl/20240226-2101-4865-6588-65fdf3734851"             │
│   CancellationToken = None                                                   │
│   OnLine = None }                                                            │
│ 00:00:00 #5 [Verbose] > 0                                                    │
│ 00:00:01 #6 [Debug] executeAsync / exitCode: 0 / output.Length: 1            │
│ 0                                                                            │
│ 0                                                                            │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tempFolder = FileSystem.createTempDirectory ()
let path = tempFolder </> "test.txt"

let command = @$"pwsh -c ""Get-Content {path}"""

async {
    do! "0" |> FileSystem.writeAllTextAsync path
    let cts = new System.Threading.CancellationTokenSource ()
    trace Debug (fun () -> "1") getLocals
    let! result =
        executeWithOptionsAsync
            {
                Command = command
                CancellationToken = Some cts.Token
                OnLine = None
                WorkingDirectory = None
            }
        |> Async.StartChild
    trace Debug (fun () -> "2") getLocals
    do! Async.Sleep 100
    trace Debug (fun () -> "3") getLocals
    cts.Cancel ()
    trace Debug (fun () -> "4") getLocals
    let! exitCode, output = result
    trace Debug (fun () -> "5") getLocals
    return exitCode, output
}
|> Async.runWithTimeout 10000
|> function
    | Some (exitCode, output) ->
        exitCode |> _equal -2147483648
        output |> _equal "System.Threading.Tasks.TaskCanceledException: A task 
was canceled."

        true
    | _ -> false
|> _equal true

╭─[ 407.69ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:01 #7 [Debug] 1                                                        │
│ 00:00:01 #8 [Debug] 2                                                        │
│ 00:00:01 #9 [Debug] executeAsync / options: { Command =                      │
│    "pwsh -c "Get-Content                                                     │
│ /tmp/!dotnet-repl/20240226-2101-5003-0328-0c6fc9ac4111/test.txt""            │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = None }                                                            │
│ 00:00:01 #10 [Debug] 3                                                       │
│ 00:00:01 #11 [Debug] 4                                                       │
│ 00:00:01 #12 [Warning] executeAsync / WaitForExitAsync / ex:                 │
│ System.Threading.Tasks.TaskCanceledException: A task was canceled.           │
│ 00:00:01 #13 [Debug] executeAsync / exitCode: -2147483648 / output.Length:   │
│ 66                                                                           │
│ 00:00:01 #14 [Debug] 5                                                       │
│ -2147483648                                                                  │
│ System.Threading.Tasks.TaskCanceledException: A task was canceled.           │
│ True                                                                         │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## splitArgs                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline splitArgs commandLine =
    commandLine
    |> System.CommandLine.Parsing.CommandLineStringSplitter.Instance.Split

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""a b "c d" e"""
|> splitArgs
|> Seq.toArray
|> _equal [[| "a"; "b"; "c d"; "e" |]]

╭─[ 17.67ms - stdout ]─────────────────────────────────────────────────────────╮
│ [ a, b, c d, e ]                                                             │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parseArgs                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseArgs<'T when 'T :> Argu.IArgParserTemplate> args =
    let assemblyName = 
System.Reflection.Assembly.GetEntryAssembly().GetName().Name
    let errorHandler : Argu.IExiter =
        if [[ "Microsoft.DotNet.Interactive.App"; "dotnet-repl" ]] |> 
List.contains assemblyName
        then Argu.ExceptionExiter ()
        else Argu.ProcessExiter (function Argu.ErrorCode.HelpText -> None | _ ->
Some System.ConsoleColor.Red)

    let parser =
        Argu.ArgumentParser.Create<'T> (
            programName = $"{assemblyName}{getExecutableSuffix ()}",
            errorHandler = errorHandler
        )

    parser.ParseCommandLine args

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; 
Argu.ArguAttributes.Last>]]
        Paths of paths : string list

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | Paths _ -> nameof Paths

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

╭─[ 94.20ms - return value ]───────────────────────────────────────────────────╮
│ USAGE: dotnet [--help] <paths>...                                            │
│                                                                              │
│ PATHS:                                                                       │
│                                                                              │
│     <paths>...            Paths                                              │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --help                display this list of options.                      │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

fun () -> parseArgs<Arguments> [[||]] |> ignore
|> _throwsC (fun ex _ ->
    printException ex
    |> _stringContains "Argu.ArguParseException: ERROR: missing parameter 
'<paths>...'."
)

╭─[ 38.97ms - stdout ]─────────────────────────────────────────────────────────╮
│ FSI_0030+it@3-246                                                            │
│ Argu.ArguParseException: ERROR: missing parameter '<paths>...'.              │
│ USAGE: dotnet-repl [--help] <paths>...                                       │
│                                                                              │
│ PATHS:                                                                       │
│                                                                              │
│     <paths>...            Paths                                              │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --help                display this list of options.                      │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseAllArgs<'T when 'T :> Argu.IArgParserTemplate> args =
    args
    |> parseArgs<'T>
    |> fun results -> results.GetAllResults ()

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; 
Argu.ArguAttributes.Last>]]
        Paths of paths : string list

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | Paths _ -> nameof Paths

parseAllArgs<Arguments> [[| "a b"; "c" |]]
|> _equal [[ Arguments.Paths [[ "a b"; "c" ]] ]]

╭─[ 65.86ms - stdout ]─────────────────────────────────────────────────────────╮
│ FSharpList<Arguments>                                                        │
│       - paths: [ a b, c ]                                                    │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseArgsMap<'T when 'T :> Argu.IArgParserTemplate> args =
    args
    |> parseAllArgs<'T>
    |> List.groupBy CommonFSharp.getUnionCaseName<'T>
    |> Map.ofList

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

parseArgsMap<Arguments> [[| "a b"; "c" |]]
|> _equal (
    [[ nameof Arguments.Paths, [[ Arguments.Paths [[ "a b"; "c" ]] ]] ]]
    |> Map.ofList
)

╭─[ 37.92ms - stdout ]─────────────────────────────────────────────────────────╮
│ FSharpMap<String,FSharpList<Arguments>>                                      │
│       - Key: Paths                                                           │
│         Value: FSharpList<Arguments>                                         │
│           - paths: [ a b, c ]                                                │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook Runtime.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 339569 bytes to Runtime.dib.html

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Toml (Polyglot)                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/tomlyn/0.17.0/lib/net7.0/Tomlyn.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common

── fsharp ──────────────────────────────────────────────────────────────────────
let inline (/./) (table: Tomlyn.Model.TomlTable) (key: string) : 
Tomlyn.Model.TomlTable =
    table.[[key]] :?> Tomlyn.Model.TomlTable

let inline (/../) (table: Tomlyn.Model.TomlTable) (key: string) : 'T seq =
    table.[[key]] :?> Tomlyn.Model.TomlArray |> Seq.cast<'T>

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tomlContent =
    """
[[extension]]
paths = [["/a", "/b"]]
"""

let toml = Tomlyn.Toml.Parse tomlContent
let tomlModel = Tomlyn.Toml.ToModel toml

let paths : string seq = tomlModel /./ "extension" /../ "paths"

paths
|> Seq.toList
|> _equal [[ "/a"; "/b" ]]

╭─[ 75.19ms - stdout ]─────────────────────────────────────────────────────────╮
│ [ /a, /b ]                                                                   │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook Toml.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 277983 bytes to Toml.dib.html
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Common.dib
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Async.dib
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: CommonFSharp.dib
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: AsyncSeq.dib
00:00:00 #4 [Debug] parseDibCode / output: Fs / file: AsyncSeq.dib
00:00:00 #4 [Debug] parseDibCode / output: Fs / file: Common.dib
00:00:00 #4 [Debug] parseDibCode / output: Fs / file: CommonFSharp.dib
00:00:00 #4 [Debug] parseDibCode / output: Fs / file: Async.dib
00:00:00 #6 [Debug] writeDibCode / output: Fs / path: Crypto.dib
00:00:00 #7 [Debug] writeDibCode / output: Fs / path: FileSystem.dib
00:00:00 #9 [Debug] parseDibCode / output: Fs / file: Crypto.dib
00:00:00 #5 [Debug] writeDibCode / output: Fs / path: Threading.dib
00:00:00 #10 [Debug] parseDibCode / output: Fs / file: FileSystem.dib
00:00:00 #11 [Debug] parseDibCode / output: Fs / file: Threading.dib
00:00:00 #8 [Debug] writeDibCode / output: Fs / path: Networking.dib
00:00:00 #12 [Debug] parseDibCode / output: Fs / file: Networking.dib
00:00:00 #13 [Debug] writeDibCode / output: Fs / path: Runtime.dib
00:00:00 #14 [Debug] parseDibCode / output: Fs / file: Runtime.dib
00:00:00 #15 [Debug] writeDibCode / output: Fs / path: Toml.dib
00:00:00 #16 [Debug] parseDibCode / output: Fs / file: Toml.dib
In [ ]:
{ . "$ScriptDir/../lib/rust/fable/build.ps1" } | Invoke-Block
── pwsh ────────────────────────────────────────────────────────────────────────
. ../../../scripts/nbs_header.ps1
. ../../../scripts/core.ps1

── pwsh ────────────────────────────────────────────────────────────────────────
dotnet fable --optimize --lang rs --extension .rs

╭─[ 5.70s - stdout ]───────────────────────────────────────────────────────────╮
│ Fable 4.13.0: F# to Rust compiler (status: alpha)                         │
│                                                                           │
│ Thanks to the contributor! @xdaDaveShaw                                      │
│ Stand with Ukraine! https://standwithukraine.com.ua/                      │
│                                                                              │
│ Parsing fable-library-rust.fsproj...                                      │
│ .> dotnet restore fable-library-rust.fable-temp.csproj                    │
│ -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true  │
│   Determining projects to restore...                                         │
│   Restored                                                                   │
│ /home/runner/work/polyglot/polyglot/lib/rust/fable/fable-library-rust.fable- │
│ temp.csproj (in 86 ms).                                                      │
│ .> dotnet restore                                                         │
│ /home/runner/work/polyglot/polyglot/lib/rust/fable/fable-library-rust.fsproj │
│   Determining projects to restore...                                         │
│   Restored                                                                   │
│ /home/runner/work/polyglot/polyglot/lib/rust/fable/fable-library-rust.fsproj │
│ (in 253 ms).                                                                 │
│ Project and references (1 source files) parsed in 4332ms                  │
│                                                                              │
│ Started Fable compilation...                                              │
│ Fable compilation finished in 367ms                                       │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook build.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 273200 bytes to build.dib.html
In [ ]:
{ . "$ScriptDir/../apps/spiral/build.ps1" } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Supervisor (Polyglot)                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
b/net6.0/System.CommandLine.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
/lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
#r 
@"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
rp.Json.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/CommonFSharp.fs
#!import ../../lib/fsharp/Threading.fs
#!import ../../lib/fsharp/Async.fs
#!import ../../lib/fsharp/AsyncSeq.fs
#!import ../../lib/fsharp/Networking.fs
#!import ../../lib/fsharp/Runtime.fs
#!import ../../lib/fsharp/FileSystem.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module CommonFSharp =

    open Common

    /// ## getUnionCaseName

    let inline getUnionCaseName<'T> (x: 'T) =
        match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
        | case, _ -> case.Name


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Threading =

    open Common

    /// ## newDisposableToken

    let inline newDisposableToken (mergeToken: 
System.Threading.CancellationToken option) =
        let cts = new System.Threading.CancellationTokenSource ()
        let cts =
            match mergeToken with
            | None -> cts
            | Some mergeToken ->
                System.Threading.CancellationTokenSource.CreateLinkedTokenSource
[[| cts.Token; mergeToken |]]
        let disposable = newDisposable cts.Cancel
        cts.Token, disposable


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module AsyncSeq =

    open Common

    /// ## subscribeEvent

    let inline subscribeEvent (event: IEvent<'H, 'A>) map =
        let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 
'A>(event.AddHandler, event.RemoveHandler)
        System.Reactive.Linq.Observable.Select (observable, fun event -> map 
event.EventArgs)
        |> FSharp.Control.AsyncSeq.ofObservableBuffered

    let subscribeToken (token : System.Threading.CancellationToken) =
        let tcs = new System.Threading.Tasks.TaskCompletionSource ()
        System.Action tcs.SetResult |> token.Register |> ignore
        let start = System.DateTime.Now.Ticks
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun (...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Networking =

    open Common

    /// ## testPortOpen

    let inline testPortOpen port = async {
        let! ct = Async.CancellationToken
        use client = new System.Net.Sockets.TcpClient ()
        try
            do! client.ConnectAsync ("127.0.0.1", port, ct) |> 
Async.awaitValueTaskUnit
            return true
        with ex ->
            trace Verbose (fun () -> $"testPortOpen / ex: {ex |> 
printException}") getLocals
            return false
    }

    let inline testPortOpenTimeout timeout port = async {
        let! result =
            testPortOpen port
            |> Async.runWithTimeoutAsync timeout
        return
            match result with
            | None -> false
 ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Runtime =

    open Common

    /// ## isWindows

    let isWindows =
        fun () ->
            System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
                System.Runtime.InteropServices.OSPlatform.Windows
        |> memoize

    /// ## getExecutableSuffix

    let inline getExecutableSuffix () =
        if isWindows ()
        then ".exe"
        else ""

    /// ## splitCommand

    type private CommandParseStep =
        | Start
        | Path of quoted: bool
        | Arguments

    let splitCommand (command: string) =
        let rec loop (path, args) chars step =
            match chars, step with
            | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module FileSystem =

    open Common

    /// ## Operators

    module Operators =
        let inline (</>) a b =
            System.IO.Path.Combine (a, b)

    open Operators

    /// ## createTempDirectoryName

    let inline createTempDirectoryName () =
        let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name

        System.IO.Path.GetTempPath ()
        </> $"!{root}"
        </> string (newGuidFromDateTime System.DateTime.Now)

    /// ## createTempDirectory

    let inline createTempDirectory () =
        let tempFolder = createTempDirectoryName ()
        let result = System.IO.Directory.CreateDirectory tempFolder

        if not result.Exists then
            let ge...

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open FileSystem.Operators
open Microsoft.AspNetCore.SignalR.Client

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## sendJson                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline sendJson (port : int) (json : string) = async {
    let! portOpen = Networking.testPortOpen port
    if portOpen then
        try
            let connection = 
HubConnectionBuilder().WithUrl($"http://127.0.0.1:{port}").Build()
            do! connection.StartAsync () |> Async.AwaitTask
            let! result = connection.InvokeAsync<string>("ClientToServerMsg", 
json) |> Async.AwaitTask
            do! connection.StopAsync () |> Async.AwaitTask
            trace Debug (fun () -> $"sendJson / port: {port} / json: {json} / 
result.Length: {result |> Option.ofObj |> Option.map String.length}") getLocals
            return Some result
        with ex ->
            trace Critical (fun () -> $"sendJson / port: {port} / json: {json} /
ex: {ex |> printException}") getLocals
            return None
    else
        trace Debug (fun () -> "sendJson / error: port not open") getLocals
        return None
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## sendObj                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline sendObj port obj =
    obj
    |> System.Text.Json.JsonSerializer.Serialize
    |> sendJson port

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## awaitCompiler                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type VSCPos = {| line : int; character : int |}
type VSCRange = VSCPos * VSCPos
type RString = VSCRange * string
type TracedError = {| trace : string list; message : string |}
type ClientErrorsRes =
    | FatalError of string
    | TracedError of TracedError
    | PackageErrors of {| uri : string; errors : RString list |}
    | TokenizerErrors of {| uri : string; errors : RString list |}
    | ParserErrors of {| uri : string; errors : RString list |}
    | TypeErrors of {| uri : string; errors : RString list |}

── fsharp ──────────────────────────────────────────────────────────────────────
let inline awaitCompiler port cancellationToken = async {
    let! ct =
        cancellationToken
        |> Option.defaultValue System.Threading.CancellationToken.None
        |> Async.mergeCancellationTokenWithDefaultAsync

    let cts = new System.Threading.CancellationTokenSource ()

    let compiler = MailboxProcessor.Start (fun inbox -> async {
        let! availablePort = Networking.getAvailablePort (Some 60) port
        if availablePort <> port then
            inbox.Post port
        else
            let repositoryRoot = FileSystem.getSourceDirectory () |> 
FileSystem.findParent ".paket" false

            let compilerPath =
                repositoryRoot </> "deps/The-Spiral-Language/The Spiral Language
2/artifacts/bin/The Spiral Language 2/release"
                |> System.IO.Path.GetFullPath

            let dllPath = compilerPath </> "Spiral.dll"

            let! exitCode, result =
                Runtime.executeWithOptionsAsync
                    {
                        Command = $@"dotnet ""{dllPath}"" --port {availablePort}
--default-int i32 --default-float f64"
                        CancellationToken = Some ct
                        WorkingDirectory = None
                        OnLine = Some <| fun { Line = line } -> async {
                            if line |> String.contains $"Server bound to: 
http://localhost:{availablePort}" then
                                do! Networking.waitForPortAccess (Some 500) true
availablePort |> Async.Ignore

                                let rec loop retry = async {
                                    let getLocals () = $"port: {availablePort} /
retry: {retry} / {getLocals ()}"
                                    try
                                        let pingObj = {| Ping = true |}
                                        let! pingResult = pingObj |> sendObj 
availablePort
                                        trace Verbose (fun () -> $"awaitCompiler
/ Ping / result: {pingResult}") getLocals
                                    with ex ->
                                        trace Verbose (fun () -> $"awaitCompiler
/ Ping / ex: {ex |> printException}") getLocals
                                        do! Async.Sleep 10
                                        do! loop (retry + 1)
                                }
                                do! loop 0
                                inbox.Post availablePort
                        }
                    }
            trace Debug (fun () -> $"awaitCompiler / exitCode: {exitCode} / 
result: {result}") getLocals
            cts.Cancel ()
    }, ct)

    let! serverPort = compiler.Receive ()

    let connection = 
HubConnectionBuilder().WithUrl($"http://127.0.0.1:{serverPort}").Build ()
    do! connection.StartAsync () |> Async.AwaitTask

    let event = Event<_> ()
    let disposable = connection.On<string> ("ServerToClientMsg", event.Trigger)
    let stream =
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun () -> async {
                let! msg = event.Publish |> Async.AwaitEvent
                return Some (msg |> 
FSharp.Json.Json.deserialize<ClientErrorsRes>, ())
            })
            ()

    let disposable =
        newDisposable (fun () ->
            disposable.Dispose ()
            connection.StopAsync () |> Async.AwaitTask |> Async.StartImmediate
        )

    return
        serverPort,
        stream,
        cts.Token,
        disposable
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## getFileUri                                                                │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getFileUri path =
    $"file:///{path |> String.trimStart [[| '/' |]]}"

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getFilePathFromUri uri =
    match System.Uri.TryCreate (uri, System.UriKind.Absolute) with
    | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath
    | _ -> failwith "invalid uri"

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getCompilerPort () =
    13805

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## buildFile                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline buildFile timeout port cancellationToken path = async {
    let fullPath = path |> System.IO.Path.GetFullPath
    let fileDir = fullPath |> System.IO.Path.GetDirectoryName
    let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension
    let! code = fullPath |> FileSystem.readAllTextAsync

    let eventFilter = function
        | FileSystem.FileSystemChange.Changed (path, _) when path = 
$"{fileName}.fsx" -> true
        | _ -> false

    let stream, disposable = fileDir |> FileSystem.watchDirectory eventFilter
    use _ = disposable

    let token, disposable = Threading.newDisposableToken cancellationToken
    use _ = disposable

    let! serverPort, errors, ct, disposable = awaitCompiler port (Some token)
    use _ = disposable

    let fsxContentSeq =
        stream
        |> FSharp.Control.AsyncSeq.choose (function
            | _, (FileSystem.FileSystemChange.Changed (path, Some content) as 
event)
                when event |> eventFilter
                ->
                Some content
            | _ -> None
        )
        |> FSharp.Control.AsyncSeq.map (fun content ->
            Some (content |> String.replace "\r\n" "\n"), None
        )

    let inline printErrorData (data : {| uri : string; errors : RString list |})
=
        let fileName = data.uri |> System.IO.Path.GetFileName
        let errors =
            data.errors
            |> List.map snd
            |> String.concat "\n"
        $"{fileName}:\n{errors}"

    let errorsSeq =
        errors
        |> FSharp.Control.AsyncSeq.choose (fun error ->
            match error with
            | FatalError message ->
                Some (message, error)
            | TracedError data ->
                Some (data.message, error)
            | PackageErrors data when data.errors |> List.isEmpty |> not ->
                Some (data |> printErrorData, error)
            | TokenizerErrors data when data.errors |> List.isEmpty |> not ->
                Some (data |> printErrorData, error)
            | ParserErrors data when data.errors |> List.isEmpty |> not ->
                Some (data |> printErrorData, error)
            | TypeErrors data when data.errors |> List.isEmpty |> not ->
                Some (data |> printErrorData, error)
            | _ -> None
        )
        |> FSharp.Control.AsyncSeq.map (fun (message, error) ->
            None, Some (message, error)
        )

    let timerSeq =
        1000
        |> FSharp.Control.AsyncSeq.intervalMs
        |> FSharp.Control.AsyncSeq.map (fun _ -> None, None)

    let outputSeq =
        [[ fsxContentSeq; errorsSeq; timerSeq ]]
        |> FSharp.Control.AsyncSeq.mergeAll

    let! outputChild =
        ((None, [[]], 0), outputSeq)
        ||> FSharp.Control.AsyncSeq.scan (
            fun (fsxContentResult, errors, typeErrorCount) (fsxContent, error) 
->
                match fsxContent, error with
                | Some fsxContent, None -> Some fsxContent, errors, 
typeErrorCount
                | None, Some (_, FatalError "File main has a type error 
somewhere in its path.") ->
                    fsxContentResult, errors, typeErrorCount + 1
                | None, Some error -> fsxContentResult, error :: errors, 
typeErrorCount
                | None, None when typeErrorCount >= 1 ->
                    fsxContentResult, errors, typeErrorCount + 1
                | _ -> fsxContentResult, errors, typeErrorCount
        )
        |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (fsxContent, errors, 
typeErrorCount) ->
            trace Debug (fun () -> $"buildFile / takeWhileInclusive / 
fsxContent: {fsxContent |> Option.defaultValue System.String.Empty |> 
String.ellipsis 750} / errors: {errors} / typeErrorCount: {typeErrorCount}") 
getLocals
            match fsxContent, errors with
            | None, [[]] when typeErrorCount > 2 -> false
            | None, [[]] -> true
            | _ -> false
        )
        |> FSharp.Control.AsyncSeq.tryLast
        |> Async.withCancellationToken ct
        |> Async.catch
        |> Async.runWithTimeoutAsync timeout
        |> Async.StartChild

    let fileOpenObj = {| FileOpen = {| uri = fullPath |> getFileUri; spiText = 
code |} |}
    let! _fileOpenResult = fileOpenObj |> sendObj serverPort

    do! Async.Sleep 60

    let buildFileObj = {| BuildFile = {| uri = fullPath |> getFileUri; backend =
"Fsharp" |} |}
    let! _buildFileResult = buildFileObj |> sendObj serverPort

    return!
        outputChild
        |> Async.map (function
            | Some (Ok (Some (message, errors, _))) -> message, errors |> 
List.distinct |> List.rev
            | Some (Error ex) ->
                trace Critical (fun () -> $"buildFile / error: {ex |> 
printException}") getLocals
                None, [[]]
            | _ -> None, [[]]
        )
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## persistCode                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline persistCode code = async {
    let tempDir = FileSystem.createTempDirectory ()

    let mainPath = tempDir </> "main.spi"
    do! code |> FileSystem.writeAllTextAsync mainPath

    let repositoryRoot = FileSystem.getSourceDirectory () |> 
FileSystem.findParent ".paket" false

    let spiprojPath = tempDir </> "package.spiproj"
    let spiprojCode =
        $"""packageDir: {repositoryRoot </> "lib"}
packages:
    |core-
    spiral-
modules:
    main
"""
    do! spiprojCode |> FileSystem.writeAllTextAsync spiprojPath

    let disposable = newDisposable (fun () ->
        ()
        // tempDir |> FileSystem.deleteDirectoryAsync |> Async.Ignore |> 
Async.RunSynchronously
    )

    return mainPath, disposable
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## buildCode                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline buildCode timeout cancellationToken code = async {
    let! mainPath, disposable = persistCode code
    use _ = disposable
    let port = getCompilerPort ()
    return! mainPath |> buildFile timeout port cancellationToken
}

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let buildCode timeout cancellationToken code = buildCode timeout 
cancellationToken code

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl app () =
    console.write_line "text"
    1i32

inl main () =
    app
    |> dyn
    |> ignore
"""
|> buildCode 15000 None
|> Async.runWithTimeout 15000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        Some """let rec closure0 () () : int32 =
    let v0 : string = "text"
    System.Console.WriteLine v0
    1
let v0 : (unit -> int32) = closure0()
()
""",
        [[]]
    )
)

╭─[ 2.19s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #2 [Debug] executeAsync / options: { Command =                      │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/apps/spiral │
│ 00:00:00 #4 [Verbose] > dll_path:                                            │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0             │
│ 00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to:         │
│ http://localhost:13805                                                       │
│ 00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} /          │
│ result.Length:                                                               │
│ 00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port:     │
│ 13805 / retry: 0                                                             │
│ 00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805             │
│ 00:00:00 #20 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:00 #21 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:00 #22 [Debug] sendJson / port: 13805 / json:                          │
│ {"FileOpen":{"spiText":"inl app () =\n    console.write_line                 │
│ \u0022text\u0022\n    1i32\n\ninl main () =\n    app\n    |\u003E dyn\n      │
│ |\u003E                                                                      │
│ ignore\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-2405-0500-0d23571541 │
│ 6c/main.spi"}} / result.Length:                                              │
│ 00:00:00 #23 [Debug] sendJson / port: 13805 / json:                          │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-2405-0500-0d235715416c/main.spi"}} / result.Length:                       │
│ 00:00:01 #24 [Verbose] > Building                                            │
│ /tmp/!dotnet-repl/20240226-2102-2405-0500-0d235715416c/main.spi              │
│ 00:00:01 #25 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:01 #26 [Debug] buildFile / takeWhileInclusive / fsxContent: let rec    │
│ closure0 () () : int32 =                                                     │
│     let v0 : string = "text"                                                 │
│     System.Console.WriteLine v0                                              │
│     1                                                                        │
│ let v0 : (unit -> int32) = closure0()                                        │
│ ()                                                                           │
│  / errors: [] / typeErrorCount: 0                                            │
│ 00:00:02 #27 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - FSharpOption<String>                                    │
│           Value: let rec closure0 () () : int32 =                            │
│     let v0 : string = "text"                                                 │
│     System.Console.WriteLine v0                                              │
│     1                                                                        │
│ let v0 : (unit -> int32) = closure0()                                        │
│ ()                                                                           │
│                                                                              │
│       - [  ]                                                                 │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> _equal None

╭─[ 10.14s - stdout ]──────────────────────────────────────────────────────────╮
│ 00:00:02 #28 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #29 [Debug] executeAsync / options: { Command =                     │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:02 #30 [Verbose] > pwd:                                                │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:02 #31 [Verbose] > dll_path:                                           │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:02 #32 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #33 [Verbose] waitForPortAccess / port: 13805 / retry: 0            │
│ 00:00:02 #34 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #35 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #36 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #37 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #38 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #39 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #40 [Verbose] > Starting the Spiral Server. It is bound to:         │
│ http://localhost:13805                                                       │
│ 00:00:02 #41 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #42 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:02 #43 [Debug] sendJson / port: 13805 / json: {"Ping":true} /          │
│ result.Length:                                                               │
│ 00:00:02 #44 [Verbose] awaitCompiler / Ping / result: Some(null) / port:     │
│ 13805 / retry: 0                                                             │
│ 00:00:02 #45 [Verbose] > Server bound to: http://localhost:13805             │
│ 00:00:02 #46 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:02 #47 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:02 #48 [Debug] sendJson / port: 13805 / json:                          │
│ {"FileOpen":{"spiText":"","uri":"file:///tmp/!dotnet-repl/20240226-2102-2626 │
│ -2670-2389808f8180/main.spi"}} / result.Length:                              │
│ 00:00:02 #49 [Debug] sendJson / port: 13805 / json:                          │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-2626-2670-2389808f8180/main.spi"}} / result.Length:                       │
│ 00:00:02 #50 [Verbose] > Building                                            │
│ /tmp/!dotnet-repl/20240226-2102-2626-2670-2389808f8180/main.spi              │
│ 00:00:03 #51 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:03 #52 [Verbose] > Cannot find `main` in file main.                    │
│ 00:00:03 #53 [Verbose] > Build skipped for                                   │
│ /tmp/!dotnet-repl/20240226-2102-2626-2670-2389808f8180/main.spi              │
│ 00:00:04 #54 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:05 #55 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:06 #56 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:07 #57 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:08 #58 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:09 #59 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:10 #60 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:11 #61 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:12 #62 [Debug] runWithTimeoutAsync / timeout: 10000                    │
│ 00:00:12 #63 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ <null>                                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"inl app () =
    0i32

inl a = 1

inl main () =
    app
    |> dyn
    |> ignore
"
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        None,
        [[ "main.spi:
Global inl/let statements should all return functions known at parse time." ]]
    )
)

╭─[ 982.43ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:12 #64 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #65 [Debug] executeAsync / options: { Command =                     │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:12 #66 [Verbose] > pwd:                                                │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:12 #67 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #68 [Verbose] waitForPortAccess / port: 13805 / retry: 0            │
│ 00:00:12 #69 [Verbose] > dll_path:                                           │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:12 #70 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #71 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #72 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #73 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #74 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #75 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #76 [Verbose] > Starting the Spiral Server. It is bound to:         │
│ http://localhost:13805                                                       │
│ 00:00:12 #77 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #78 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:12 #81 [Debug] sendJson / port: 13805 / json: {"Ping":true} /          │
│ result.Length:                                                               │
│ 00:00:12 #82 [Verbose] awaitCompiler / Ping / result: Some(null) / port:     │
│ 13805 / retry: 0                                                             │
│ 00:00:12 #83 [Verbose] > Server bound to: http://localhost:13805             │
│ 00:00:12 #84 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:12 #85 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:12 #86 [Debug] sendJson / port: 13805 / json:                          │
│ {"FileOpen":{"spiText":"inl app () =\n    0i32\n\ninl a = 1\n\ninl main ()   │
│ =\n    app\n    |\u003E dyn\n    |\u003E                                     │
│ ignore\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-3639-3935-31d35e8a77 │
│ cc/main.spi"}} / result.Length:                                              │
│ 00:00:12 #87 [Debug] sendJson / port: 13805 / json:                          │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-3639-3935-31d35e8a77cc/main.spi"}} / result.Length:                       │
│ 00:00:13 #88 [Verbose] > Building                                            │
│ /tmp/!dotnet-repl/20240226-2102-3639-3935-31d35e8a77cc/main.spi              │
│ 00:00:13 #89 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [(main.spi:                                                                  │
│ Global inl/let statements should all return functions known at parse time.,  │
│ ParserErrors                                                                 │
│   { errors =                                                                 │
│      [(({ character = 0                                                      │
│           line = 3 }, { character = 9                                        │
│                         line = 3 }),                                         │
│        "Global inl/let statements should all return functions known at parse │
│ time.")]                                                                     │
│     uri =                                                                    │
│                                                                              │
│ "file:///tmp/!dotnet-repl/20240226-2102-3639-3935-31d35e8a77cc/main.spi" })] │
│ / typeErrorCount: 0                                                          │
│ 00:00:13 #90 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - <null>                                                  │
│       - [ main.spi:                                                          │
│ Global inl/let statements should all return functions known at parse time. ] │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl main () =
    1i32 / 0i32
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        None,
        [[ "An attempt to divide by zero has been detected at compile time." ]]
    )
)

╭─[ 1.81s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:13 #91 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #92 [Debug] executeAsync / options: { Command =                     │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:13 #93 [Verbose] > pwd:                                                │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:13 #94 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #95 [Verbose] > dll_path:                                           │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:13 #96 [Verbose] waitForPortAccess / port: 13805 / retry: 0            │
│ 00:00:13 #97 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #98 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #99 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #100 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #101 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #102 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:13 #103 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #104 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:13 #106 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:13 #107 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:13 #108 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:13 #109 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:13 #110 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:13 #111 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"inl main () =\n    1i32 /                            │
│ 0i32\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-3736-3616-38f4daa0028e │
│ /main.spi"}} / result.Length:                                                │
│ 00:00:13 #112 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-3736-3616-38f4daa0028e/main.spi"}} / result.Length:                       │
│ 00:00:14 #113 [Verbose] > Building                                           │
│ /tmp/!dotnet-repl/20240226-2102-3736-3616-38f4daa0028e/main.spi              │
│ 00:00:14 #115 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:14 #116 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [(An attempt to divide by zero has been detected at compile time.,   │
│ TracedError                                                                  │
│   { message = "An attempt to divide by zero has been detected at compile     │
│ time."                                                                       │
│     trace =                                                                  │
│      ["Error trace on line: 1, column: 10 in module:                         │
│ /tmp/!dotnet-repl/20240226-2102-3736-3616-38f4daa0028e/main.spi.             │
│ inl main () =                                                                │
│          ^                                                                   │
│ ";                                                                           │
│       "Error trace on line: 2, column: 5 in module:                          │
│ /tmp/!dotnet-repl/20240226-2102-3736-3616-38f4daa0028e/main.spi.             │
│     1i32 / 0i32                                                              │
│     ^                                                                        │
│ "] })] / typeErrorCount: 0                                                   │
│ 00:00:14 #117 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - <null>                                                  │
│       - [ An attempt to divide by zero has been detected at compile time. ]  │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl main () =
    1 + ""
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        None,
        [[
            "main.spi:
Constraint satisfaction error.
Got: string
Fails to satisfy: number"
        ]]
    )
)

╭─[ 1.63s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:15 #118 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #119 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:15 #120 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:15 #121 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #122 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:15 #123 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:15 #124 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #125 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #126 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #127 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #128 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #129 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #130 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:15 #131 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #132 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:15 #133 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:15 #134 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:15 #135 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:15 #136 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:15 #137 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:15 #138 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
│ \u0022\u0022\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-3918-1870-1355 │
│ 085a359b/main.spi"}} / result.Length:                                        │
│ 00:00:15 #140 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-3918-1870-1355085a359b/main.spi"}} / result.Length:                       │
│ 00:00:15 #141 [Verbose] > Building                                           │
│ /tmp/!dotnet-repl/20240226-2102-3918-1870-1355085a359b/main.spi              │
│ 00:00:16 #142 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:16 #143 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 1                                               │
│ 00:00:16 #144 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [(main.spi:                                                          │
│ Constraint satisfaction error.                                               │
│ Got: string                                                                  │
│ Fails to satisfy: number, TypeErrors                                         │
│   { errors =                                                                 │
│      [(({ character = 8                                                      │
│           line = 1 }, { character = 10                                       │
│                         line = 1 }),                                         │
│        "Constraint satisfaction error.                                       │
│ Got: string                                                                  │
│ Fails to satisfy: number")]                                                  │
│     uri =                                                                    │
│                                                                              │
│ "file:///tmp/!dotnet-repl/20240226-2102-3918-1870-1355085a359b/main.spi" })] │
│ / typeErrorCount: 1                                                          │
│ 00:00:16 #145 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - <null>                                                  │
│       - [ main.spi:                                                          │
│ Constraint satisfaction error.                                               │
│ Got: string                                                                  │
│ Fails to satisfy: number ]                                                   │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl main () =
    x + y
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        None,
        [[
            "main.spi:
Unbound variable: x.
Unbound variable: y."
        ]]
    )
)

╭─[ 1.50s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:16 #147 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:16 #148 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:16 #149 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:16 #150 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:16 #151 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:16 #152 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:16 #153 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:16 #154 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:16 #155 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:17 #156 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:17 #157 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:17 #158 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:17 #159 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:17 #160 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:17 #161 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:17 #162 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:17 #163 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:17 #164 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:17 #165 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:17 #166 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:17 #167 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"inl main () =\n    x \u002B                          │
│ y\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-4081-8154-807ed369e152/ma │
│ in.spi"}} / result.Length:                                                   │
│ 00:00:17 #168 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-4081-8154-807ed369e152/main.spi"}} / result.Length:                       │
│ 00:00:17 #169 [Verbose] > Building                                           │
│ /tmp/!dotnet-repl/20240226-2102-4081-8154-807ed369e152/main.spi              │
│ 00:00:18 #171 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 1                                               │
│ 00:00:18 #172 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [(main.spi:                                                          │
│ Unbound variable: x.                                                         │
│ Unbound variable: y., TypeErrors                                             │
│   { errors =                                                                 │
│      [(({ character = 4                                                      │
│           line = 1 }, { character = 5                                        │
│                         line = 1 }), "Unbound variable: x.");                │
│       (({ character = 8                                                      │
│           line = 1 }, { character = 9                                        │
│                         line = 1 }), "Unbound variable: y.")]                │
│     uri =                                                                    │
│                                                                              │
│ "file:///tmp/!dotnet-repl/20240226-2102-4081-8154-807ed369e152/main.spi" })] │
│ / typeErrorCount: 1                                                          │
│ 00:00:18 #173 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - <null>                                                  │
│       - [ main.spi:                                                          │
│ Unbound variable: x.                                                         │
│ Unbound variable: y. ]                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""union a =
    | B
    | c

inl main () =
    ()
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        None,
        [[ "main.spi:
Expected: uppercase variable" ]]
    )
)

╭─[ 974.17ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:18 #174 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #175 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:18 #176 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:18 #177 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #178 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:18 #179 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:18 #180 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #181 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #182 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #183 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #184 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #185 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #186 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:18 #187 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #188 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:18 #190 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:18 #191 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:18 #192 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:18 #193 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:18 #194 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:18 #195 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"union a =\n    | B\n    | c\n\ninl main () =\n       │
│ ()\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-4231-3148-36ae341d7ba8/m │
│ ain.spi"}} / result.Length:                                                  │
│ 00:00:18 #196 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-4231-3148-36ae341d7ba8/main.spi"}} / result.Length:                       │
│ 00:00:18 #197 [Verbose] > Building                                           │
│ /tmp/!dotnet-repl/20240226-2102-4231-3148-36ae341d7ba8/main.spi              │
│ 00:00:19 #198 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [(main.spi:                                                          │
│ Expected: uppercase variable, ParserErrors                                   │
│   { errors = [(({ character = 6                                              │
│                   line = 2 }, { character = 7                                │
│                                 line = 2 }), "Expected: uppercase            │
│ variable")]                                                                  │
│     uri =                                                                    │
│                                                                              │
│ "file:///tmp/!dotnet-repl/20240226-2102-4231-3148-36ae341d7ba8/main.spi" })] │
│ / typeErrorCount: 0                                                          │
│ 00:00:19 #199 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - <null>                                                  │
│       - [ main.spi:                                                          │
│ Expected: uppercase variable ]                                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""
/// abc
inl main () =
    ()
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        None,
        [[ "main.spi:
Expected: whitespace" ]]
    )
)

╭─[ 934.82ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:19 #200 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #201 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:19 #202 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:19 #203 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #204 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:19 #205 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:19 #206 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #207 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #208 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #209 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #210 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #211 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #212 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:19 #213 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #214 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:19 #216 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:19 #217 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:19 #218 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:19 #219 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:19 #220 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:19 #221 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"\n/// abc\ninl main () =\n                           │
│ ()\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-4336-3660-333195975bb4/m │
│ ain.spi"}} / result.Length:                                                  │
│ 00:00:19 #222 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-4336-3660-333195975bb4/main.spi"}} / result.Length:                       │
│ 00:00:20 #223 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [(main.spi:                                                          │
│ Expected: whitespace, TokenizerErrors                                        │
│   { errors = [(({ character = 2                                              │
│                   line = 1 }, { character = 3                                │
│                                 line = 1 }), "Expected: whitespace")]        │
│     uri =                                                                    │
│                                                                              │
│ "file:///tmp/!dotnet-repl/20240226-2102-4336-3660-333195975bb4/main.spi" })] │
│ / typeErrorCount: 0                                                          │
│ 00:00:20 #224 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - <null>                                                  │
│       - [ main.spi:                                                          │
│ Expected: whitespace ]                                                       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""
inl main () =
    real
        inl real_unbox forall a. (obj : a) : a =
            typecase obj with
            | _ => obj
        real_unbox ()
    ()
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        None,
        [[ "Cannot apply a forall with a term." ]]
    )
)

╭─[ 1.84s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:20 #225 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #226 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:20 #227 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:20 #228 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #229 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:20 #230 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:20 #231 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #232 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #233 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #234 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #235 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #236 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #237 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:20 #238 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #239 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:20 #240 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:20 #241 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:20 #242 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:20 #243 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:20 #244 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:20 #245 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"\ninl main () =\n    real\n        inl real_unbox    │
│ forall a. (obj : a) : a =\n            typecase obj with\n            | _    │
│ =\u003E obj\n        real_unbox ()\n                                         │
│ ()\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-4422-2282-2791eda5f35a/m │
│ ain.spi"}} / result.Length:                                                  │
│ 00:00:20 #247 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-4422-2282-2791eda5f35a/main.spi"}} / result.Length:                       │
│ 00:00:20 #248 [Verbose] > Building                                           │
│ /tmp/!dotnet-repl/20240226-2102-4422-2282-2791eda5f35a/main.spi              │
│ 00:00:21 #249 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:21 #251 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [(Cannot apply a forall with a term., TracedError                    │
│   { message = "Cannot apply a forall with a term."                           │
│     trace =                                                                  │
│      ["Error trace on line: 2, column: 10 in module:                         │
│ /tmp/!dotnet-repl/20240226-2102-4422-2282-2791eda5f35a/main.spi.             │
│ inl main () =                                                                │
│          ^                                                                   │
│ ";                                                                           │
│       "Error trace on line: 4, column: 9 in module:                          │
│ /tmp/!dotnet-repl/20240226-2102-4422-2282-2791eda5f35a/main.spi.             │
│         inl real_unbox forall a. (obj : a) : a =                             │
│         ^                                                                    │
│ ";                                                                           │
│       "Error trace on line: 7, column: 9 in module:                          │
│ /tmp/!dotnet-repl/20240226-2102-4422-2282-2791eda5f35a/main.spi.             │
│         real_unbox ()                                                        │
│         ^                                                                    │
│ "] })] / typeErrorCount: 0                                                   │
│ 00:00:21 #252 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - <null>                                                  │
│       - [ Cannot apply a forall with a term. ]                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""
inl main () =
    real
        inl real_unbox forall a. (obj : a) : a =
            typecase obj with
            | _ => obj
        real_unbox `i32 1
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        None,
        [[ "The main function should not have a forall." ]]
    )
)

╭─[ 1.67s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:21 #253 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:21 #254 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:22 #255 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:22 #256 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:22 #257 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #258 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:22 #259 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #260 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #261 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #262 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #263 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #264 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #265 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:22 #266 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #267 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:22 #268 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:22 #269 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:22 #270 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:22 #271 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:22 #272 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:22 #273 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"\ninl main () =\n    real\n        inl real_unbox    │
│ forall a. (obj : a) : a =\n            typecase obj with\n            | _    │
│ =\u003E obj\n        real_unbox \u0060i32                                    │
│ 1\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-4607-0723-0fe264152e6a/ma │
│ in.spi"}} / result.Length:                                                   │
│ 00:00:22 #274 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-4607-0723-0fe264152e6a/main.spi"}} / result.Length:                       │
│ 00:00:22 #276 [Verbose] > Building                                           │
│ /tmp/!dotnet-repl/20240226-2102-4607-0723-0fe264152e6a/main.spi              │
│ 00:00:23 #277 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:23 #278 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [(The main function should not have a forall., TracedError { message │
│ = "The main function should not have a forall."                              │
│               trace = [] })] / typeErrorCount: 0                             │
│ 00:00:23 #279 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - <null>                                                  │
│       - [ The main function should not have a forall. ]                      │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""
inl init_series start end inc =
    inl total : f64 = conv ((end - start) / inc) + 1
    listm.init total (conv >> (*) inc >> (+) start) : list f64

type integration = (f64 -> f64) -> f64 -> f64 -> f64

inl integral dt : integration =
    fun f a b =>
        init_series (a + dt / 2) (b - dt / 2) dt
        |> listm.map (f >> (*) dt)
        |> listm.fold (+) 0

inl main () =
    integral 0.1 (fun x => x ** 2) 0 1
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
|> _equal (
    Some (
        Some "0.3325000000000001\n",
        [[]]
    )
)

╭─[ 1.76s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:23 #280 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #281 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:23 #283 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:23 #284 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #285 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:23 #286 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:23 #287 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #288 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #289 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #290 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #291 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #292 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #293 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:23 #294 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:23 #295 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:24 #296 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:24 #297 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:24 #298 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:24 #299 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:24 #300 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:24 #301 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :   │
│ f64 = conv ((end - start) / inc) \u002B 1\n    listm.init total (conv        │
│ \u003E\u003E (*) inc \u003E\u003E (\u002B) start) : list f64\n\ntype         │
│ integration = (f64 -\u003E f64) -\u003E f64 -\u003E f64 -\u003E f64\n\ninl   │
│ integral dt : integration =\n    fun f a b =\u003E\n        init_series (a   │
│ \u002B dt / 2) (b - dt / 2) dt\n        |\u003E listm.map (f \u003E\u003E    │
│ (*) dt)\n        |\u003E listm.fold (\u002B) 0\n\ninl main () =\n            │
│ integral 0.1 (fun x =\u003E x ** 2) 0                                        │
│ 1\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-4773-7359-7c45bc36f80d/ma │
│ in.spi"}} / result.Length:                                                   │
│ 00:00:24 #302 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-4773-7359-7c45bc36f80d/main.spi"}} / result.Length:                       │
│ 00:00:24 #303 [Verbose] > Building                                           │
│ /tmp/!dotnet-repl/20240226-2102-4773-7359-7c45bc36f80d/main.spi              │
│ 00:00:25 #305 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:25 #306 [Debug] buildFile / takeWhileInclusive / fsxContent:           │
│ 0.3325000000000001                                                           │
│  / errors: [] / typeErrorCount: 0                                            │
│ 00:00:25 #307 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│ FSharpOption<Tuple<FSharpOption<String>,FSharpList<String>>>                 │
│       Value:       - FSharpOption<String>                                    │
│           Value: 0.3325000000000001                                          │
│                                                                              │
│       - [  ]                                                                 │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""
inl init_series start end inc =
    inl total : f64 = conv ((end - start) / inc) + 1
    listm.init total (conv >> (*) inc >> (+) start) : list f64

type integration = (f64 -> f64) -> f64 -> f64 -> f64

inl integral dt : integration =
    fun f a b =>
        init_series (a + dt / 2) (b - dt / 2) dt
        |> listm.map (f >> (*) dt)
        |> listm.fold (+) 0

inl main () =
    integral 0.01 (fun x => x ** 2) 0 1
"""
|> buildCode 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (fsxContent, errors) -> fsxContent, errors |> List.map fst)
// |> _equal None
// |> fun x -> printfn $"{x.ToDisplayString ()}"

╭─[ 1.84s - return value ]─────────────────────────────────────────────────────╮
│ <details open="open" class="dni-treeview"><summary><span                     │
│ class="dni-code-hint"><code>Some((Some(0.33332500000000004<br/>), [          │
│ ]))</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
│ d>Value</td><td><details class="dni-treeview"><summary><span                 │
│ class="dni-code-hint"><code>(Some(0.33332500000000004<br/>), [               │
│ ])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
│ >Item1</td><td><details class="dni-treeview"><summary><span                  │
│ class="dni-code-hint"><code>Some(0.33332500000000004<br/>)</code></span></su │
│ mmary><div><table><thead><tr></tr></thead><tbody><tr><td>Value</td><td><div  │
│ class="dni-plaintext"><pre>0.33332500000000004                               │
│ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
│ 2</td><td><div c...                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 1.84s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:25 #308 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #309 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:buildCode@3-1005> }                                     │
│ 00:00:25 #310 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:25 #311 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #312 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:25 #313 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:25 #314 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #315 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #316 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #318 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #319 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #320 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #321 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:25 #322 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #323 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:25 #324 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:25 #325 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:25 #326 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:25 #327 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:25 #328 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:25 #329 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :   │
│ f64 = conv ((end - start) / inc) \u002B 1\n    listm.init total (conv        │
│ \u003E\u003E (*) inc \u003E\u003E (\u002B) start) : list f64\n\ntype         │
│ integration = (f64 -\u003E f64) -\u003E f64 -\u003E f64 -\u003E f64\n\ninl   │
│ integral dt : integration =\n    fun f a b =\u003E\n        init_series (a   │
│ \u002B dt / 2) (b - dt / 2) dt\n        |\u003E listm.map (f \u003E\u003E    │
│ (*) dt)\n        |\u003E listm.fold (\u002B) 0\n\ninl main () =\n            │
│ integral 0.01 (fun x =\u003E x ** 2) 0                                       │
│ 1\n","uri":"file:///tmp/!dotnet-repl/20240226-2102-4949-4965-4fdff85fb267/ma │
│ in.spi"}} / result.Length:                                                   │
│ 00:00:25 #330 [Debug] sendJson / port: 13805 / json:                         │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///tmp/!dotnet-repl/20240226-21 │
│ 02-4949-4965-4fdff85fb267/main.spi"}} / result.Length:                       │
│ 00:00:26 #331 [Verbose] > Building                                           │
│ /tmp/!dotnet-repl/20240226-2102-4949-4965-4fdff85fb267/main.spi              │
│ 00:00:26 #333 [Debug] buildFile / takeWhileInclusive / fsxContent:  /        │
│ errors: [] / typeErrorCount: 0                                               │
│ 00:00:27 #334 [Debug] buildFile / takeWhileInclusive / fsxContent:           │
│ 0.33332500000000004                                                          │
│  / errors: [] / typeErrorCount: 0                                            │
│ 00:00:27 #335 [Debug] watchWithFilter / Disposing watch stream / filter:     │
│ FileName, LastWrite                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## getFileTokenRange                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getFileTokenRange port cancellationToken path = async {
    let fullPath = path |> System.IO.Path.GetFullPath
    let! code = fullPath |> FileSystem.readAllTextAsync
    let lines = code |> String.split [[| '\n' |]]

    let token, disposable = Threading.newDisposableToken cancellationToken
    use _ = disposable

    let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token)
    use _ = disposable

    let fileOpenObj = {| FileOpen = {| uri = fullPath |> getFileUri; spiText = 
code |} |}
    let! _fileOpenResult = fileOpenObj |> sendObj serverPort

    let fileTokenRangeObj =
        {|
            FileTokenRange =
                {|
                    uri = fullPath |> getFileUri
                    range =
                        [[|
                            {| line = 0; character = 0 |}
                            {| line = lines.Length - 1; character = 
lines.[[lines.Length - 1]].Length |}
                        |]]
                |}
        |}
    let! fileTokenRangeResult =
        fileTokenRangeObj
        |> sendObj serverPort
        |> Async.withCancellationToken ct

    return fileTokenRangeResult |> Option.map FSharp.Json.Json.deserialize<int 
array>
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## getCodeTokenRange                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getCodeTokenRange cancellationToken code = async {
    let! mainPath, disposable = persistCode code
    use _ = disposable
    let port = getCompilerPort ()
    return! mainPath |> getFileTokenRange port cancellationToken
}

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl main () = ()"""
|> getCodeTokenRange None
|> Async.runWithTimeout 10000
|> Option.flatten
|> _equal (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 
0; 2; 1; 4; 0; 0;
2; 1; 8; 0; 0; 1; 1; 8; 0 |]])

╭─[ 2.50s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:31 #340 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:31 #341 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:it@4-434> }                                             │
│ 00:00:31 #343 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:31 #344 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:31 #345 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:31 #346 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:31 #347 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:31 #348 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:31 #349 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:31 #350 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:31 #351 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:32 #352 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:32 #353 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:32 #354 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:32 #355 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:32 #356 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:32 #357 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:32 #358 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"inl main () =                                        │
│ ()","uri":"file:///tmp/!dotnet-repl/20240226-2102-5576-7630-782aad5bc002/mai │
│ n.spi"}} / result.Length:                                                    │
│ 00:00:32 #359 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileTokenRange":{"range":[                                                 │
│ {"character":0,"line":0},{"character":16,"line":0}],"uri":"file:///tmp/!dotn │
│ et-repl/20240226-2102-5576-7630-782aad5bc002/main.spi"}} / result.Length:    │
│ Some(177)                                                                    │
│ FSharpOption<Int32[]>                                                        │
│       Value: [ 0, 0, 3, 7, 0, 0, 4, 4, 0, 0, 0, 5, 1, 8, 0, 0, 1, 1, 8, 0,   │
│ 0, 2, 1, 4, 0, 0, 2, 1, 8, 0, 0, 1, 1, 8, 0 ]                                │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl main () = 1i32"""
|> getCodeTokenRange None
|> Async.runWithTimeout 10000
|> Option.flatten
|> _equal (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 
0; 2; 1; 4; 0; 0;
2; 1; 3; 0; 0; 1; 3; 12; 0 |]])

╭─[ 2.49s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:34 #362 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #363 [Debug] executeAsync / options: { Command =                    │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:it@4-801> }                                             │
│ 00:00:34 #364 [Verbose] > pwd:                                               │
│ /home/runner/work/polyglot/polyglot/apps/spiral                              │
│ 00:00:34 #365 [Verbose] > dll_path:                                          │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:34 #366 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #367 [Verbose] waitForPortAccess / port: 13805 / retry: 0           │
│ 00:00:34 #368 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #369 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #370 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #371 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #372 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #373 [Verbose] > Starting the Spiral Server. It is bound to:        │
│ http://localhost:13805                                                       │
│ 00:00:34 #374 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #375 [Verbose] testPortOpen / ex: System.AggregateException: One or │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:34 #376 [Debug] sendJson / port: 13805 / json: {"Ping":true} /         │
│ result.Length:                                                               │
│ 00:00:34 #377 [Verbose] awaitCompiler / Ping / result: Some(null) / port:    │
│ 13805 / retry: 0                                                             │
│ 00:00:34 #378 [Verbose] > Server bound to: http://localhost:13805            │
│ 00:00:34 #379 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileOpen":{"spiText":"inl main () =                                        │
│ 1i32","uri":"file:///tmp/!dotnet-repl/20240226-2102-5828-2862-27b7ca28ea40/m │
│ ain.spi"}} / result.Length:                                                  │
│ 00:00:35 #381 [Debug] sendJson / port: 13805 / json:                         │
│ {"FileTokenRange":{"range":[                                                 │
│ {"character":0,"line":0},{"character":18,"line":0}],"uri":"file:///tmp/!dotn │
│ et-repl/20240226-2102-5828-2862-27b7ca28ea40/main.spi"}} / result.Length:    │
│ Some(178)                                                                    │
│ FSharpOption<Int32[]>                                                        │
│       Value: [ 0, 0, 3, 7, 0, 0, 4, 4, 0, 0, 0, 5, 1, 8, 0, 0, 1, 1, 8, 0,   │
│ 0, 2, 1, 4, 0, 0, 2, 1, 3, 0, 0, 1, 3, 12, 0 ]                               │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Arguments                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | Build_File of string * string
    | File_Token_Range of string * string
    | Execute_Command of string
    | Timeout of int
    | Port of int

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | Build_File _ -> nameof Build_File
            | File_Token_Range _ -> nameof File_Token_Range
            | Execute_Command _ -> nameof Execute_Command
            | Timeout _ -> nameof Timeout
            | Port _ -> nameof Port

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

╭─[ 90.00ms - return value ]───────────────────────────────────────────────────╮
│ USAGE: dotnet [--help] [--build-file <string> <string>]                      │
│               [--file-token-range <string> <string>]                         │
│               [--execute-command <string>] [--timeout <int>] [--port <int>]  │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --build-file <string> <string>                                           │
│                           Build_File                                         │
│     --file-token-range <string> <string>                                     │
│                           File_Token_Range                                   │
│     --execute-command <string>                                               │
│                           Execute_Command                                    │
│     --timeout <int>       Timeout                                            │
│     --port <int>          Port                                               │
│     --help                display this list of options.                      │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## main                                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let buildFileActions =
        argsMap
        |> Map.tryFind (nameof Arguments.Build_File)
        |> Option.defaultValue [[]]
        |> List.choose (function
            | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, 
outputPath)
            | _ -> None
        )

    let fileTokenRangeActions =
        argsMap
        |> Map.tryFind (nameof Arguments.File_Token_Range)
        |> Option.defaultValue [[]]
        |> List.choose (function
            | Arguments.File_Token_Range (inputPath, outputPath) -> Some 
(inputPath, outputPath)
            | _ -> None
        )

    let executeCommandActions =
        argsMap
        |> Map.tryFind (nameof Arguments.Execute_Command)
        |> Option.defaultValue [[]]
        |> List.choose (function
            | Arguments.Execute_Command command -> Some command
            | _ -> None
        )

    let timeout =
        match argsMap |> Map.tryFind (nameof Arguments.Timeout) with
        | Some [[ Arguments.Timeout timeout ]] -> timeout
        | _ -> 60000 * 60

    let port =
        match argsMap |> Map.tryFind (nameof Arguments.Port) with
        | Some [[ Arguments.Port port ]] -> Some port
        | _ -> None

    async {
        let! buildFileResult =
            buildFileActions
            |> List.map (fun (inputPath, outputPath) -> async {
                let port = port |> Option.defaultWith getCompilerPort
                let! outputCode, errors = inputPath |> buildFile timeout port 
None

                errors
                |> List.map snd
                |> List.iter (fun error ->
                    trace Critical (fun () -> $"main / error: {error}") 
getLocals
                )

                match outputCode with
                | Some outputCode ->
                    do! outputCode |> FileSystem.writeAllTextAsync outputPath
                    return 0
                | None ->
                    return 1
            })
            |> Async.Sequential

        let! fileTokenRangeResult =
            fileTokenRangeActions
            |> List.map (fun (inputPath, outputPath) -> async {
                let port = port |> Option.defaultWith getCompilerPort
                let! tokenRange = inputPath |> getFileTokenRange port None
                match tokenRange with
                | Some tokenRange ->
                    do! tokenRange |> FSharp.Json.Json.serialize |> 
FileSystem.writeAllTextAsync outputPath
                    return 0
                | None ->
                    return 1
            })
            |> Async.Sequential

        let! executeCommandResult =
            executeCommandActions
            |> List.map (fun command -> async {
                let port = port |> Option.defaultWith getCompilerPort

                let localToken, disposable = Threading.newDisposableToken None
                use _ = disposable

                let! serverPort, _errors, compilerToken, disposable = 
awaitCompiler port (Some localToken)
                use _ = disposable

                let! exitCode, result =
                    Runtime.executeWithOptionsAsync
                        {
                            Command = command
                            CancellationToken = Some compilerToken
                            WorkingDirectory = None
                            OnLine = None
                        }

                trace Debug (fun () -> $"main / executeCommand / exitCode: 
{exitCode}") getLocals

                return exitCode
            })
            |> Async.Sequential

        return
            [[| buildFileResult; fileTokenRangeResult; executeCommandResult |]]
            |> Array.collect id
            |> Array.sum
    }
    |> Async.runWithTimeout timeout
    |> Option.defaultValue 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> Runtime.splitArgs
    |> Seq.toArray

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

╭─[ 13.52ms - return value ]───────────────────────────────────────────────────╮
│ <div class="dni-plaintext"><pre>0</pre></div><style>                         │
│ .dni-code-hint {                                                             │
│     font-style: italic;                                                      │
│     overflow: hidden;                                                        │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview {                                                              │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview td {                                                           │
│     vertical-align: top;                                                     │
│     text-align: start;                                                       │
│ }                                                                            │
│ details.dni-treeview {                                                       │
│     padding-left: 1em;                                                       │
│ }                                                                            │
│ table td {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ table tr {                                                                   │
│     vertical-align: top;                                                     │
│     margin: 0em 0px;                                                         │
│ }                                                                            │
│ table tr td pre                                                              │
│ {                                                                            │
│     vertical-align: top !important;                                          │
│     margin: 0em 0px !important;                                              │
│ }                                                                            │
│ table th {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ </style>                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook Supervisor.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 458649 bytes to Supervisor.dib.html
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Supervisor.dib
00:00:00 #2 [Debug] parseDibCode / output: Fs / file: Supervisor.dib
00:00:00 #1 [Debug] persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [lib/fsharp/Common.fs; lib/fsharp/CommonFSharp.fs; lib/fsharp/Threading.fs; ... ] / name: Supervisor / code.Length: 18809
00:00:00 #2 [Debug] buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj
00:00:00 #3 [Debug] executeAsync / options: { Command =
   "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64"
  WorkingDirectory =
   Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor"
  CancellationToken = None
  OnLine = None }
00:00:00 #4 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:00 #5 [Verbose] >   Determining projects to restore...
00:00:00 #6 [Verbose] >   Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483
00:00:00 #7 [Verbose] >   The last full restore is still up to date. Nothing left to do.
00:00:00 #8 [Verbose] >   Total time taken: 0 milliseconds
00:00:01 #9 [Verbose] >   Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483
00:00:01 #10 [Verbose] >   Restoring /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj
00:00:01 #11 [Verbose] >   Starting restore process.
00:00:01 #12 [Verbose] >   Total time taken: 0 milliseconds
00:00:02 #13 [Verbose] >   Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj (in 329 ms).
00:00:02 #14 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj]
00:00:11 #15 [Verbose] >   Supervisor -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/bin/Release/net8.0/linux-x64/Supervisor.dll
00:00:11 #16 [Verbose] >   Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist
00:00:12 #17 [Debug] executeAsync / exitCode: 0 / output.Length: 1148
00:00:12 #18 [Debug] executeAsync / options: { Command =
   "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime win-x64"
  WorkingDirectory =
   Some "/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor"
  CancellationToken = None
  OnLine = None }
00:00:12 #19 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:12 #20 [Verbose] >   Determining projects to restore...
00:00:13 #21 [Verbose] >   Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj (in 322 ms).
00:00:13 #22 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/Supervisor.fsproj]
00:00:21 #23 [Verbose] >   Supervisor -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/Supervisor/bin/Release/net8.0/win-x64/Supervisor.dll
00:00:22 #24 [Verbose] >   Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist
00:00:22 #25 [Debug] executeAsync / exitCode: 0 / output.Length: 738
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/apps/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 Tasks.dib -Retries 3""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ ## Tasks (Polyglot)                                                          │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240226-2103-3590-9075-9f1bce2d84b7/main.spi
00:00:05 #32 [Verbose] >
00:00:05 #33 [Verbose] > ╭─[ 3.51s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #34 [Verbose] > │ ()                                                                           │
00:00:05 #35 [Verbose] > │                                                                              │
00:00:05 #36 [Verbose] > │                                                                              │
00:00:05 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #38 [Verbose] >
00:00:05 #39 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #40 [Verbose] > inl types () =
00:00:05 #41 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::string::String\")>]]
00:00:05 #42 [Verbose] > type std_string_String = class end"
00:00:05 #43 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"&$0\")>]] type Ref<'T> =
00:00:05 #44 [Verbose] > class end"
00:00:05 #45 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"str\")>]] type Str = class
00:00:05 #46 [Verbose] > end"
00:00:05 #47 [Verbose] >
00:00:05 #48 [Verbose] > inl emit_expr forall a t. (args : a) (code : string) : t =
00:00:05 #49 [Verbose] >     real
00:00:05 #50 [Verbose] >         $"Fable.Core.RustInterop.emitRustExpr !args !code" : t
00:00:05 #51 [Verbose] >
00:00:05 #52 [Verbose] >
00:00:05 #53 [Verbose] > nominal std_string = $"std_string_String"
00:00:05 #54 [Verbose] > nominal ref' t = $"Ref<`t>"
00:00:05 #55 [Verbose] > nominal str = $"Str"
00:00:05 #56 [Verbose] >
00:00:05 #57 [Verbose] > inl format_debug forall t. (x : t) : std_string =
00:00:05 #58 [Verbose] >     real
00:00:05 #59 [Verbose] >         emit_expr `t `std_string x "format!(\"{:?}\", $0)"
00:00:05 #60 [Verbose] >
00:00:05 #61 [Verbose] > inl format_pretty forall t. (x : t) : std_string =
00:00:05 #62 [Verbose] >     real
00:00:05 #63 [Verbose] >         emit_expr `t `std_string x "format!(\"{:#?}\", $0)"
00:00:05 #64 [Verbose] >
00:00:05 #65 [Verbose] > inl to_std_string (str : ref' str) : std_string =
00:00:05 #66 [Verbose] >     // inl str = join str
00:00:05 #67 [Verbose] >     // // emit_expr () $"\"!str.to_string()\""
00:00:05 #68 [Verbose] >     // // emit_expr () $"\"alloc::string::to_string(!str)\""
00:00:05 #69 [Verbose] >     // emit_expr str "($0).to_string()"
00:00:05 #70 [Verbose] >     emit_expr str $"\"String::from(core::ops::Deref::deref($0))\""
00:00:05 #71 [Verbose] >     // emit_expr str $"\"String::from(*$0)\""
00:00:05 #72 [Verbose] >     // emit_expr () $"\"String::from(!str)\""
00:00:05 #73 [Verbose] >
00:00:05 #74 [Verbose] > inl format forall t. (x : t) : std_string =
00:00:05 #75 [Verbose] >     real
00:00:05 #76 [Verbose] >         inl result : std_string =
00:00:05 #77 [Verbose] >             typecase t with
00:00:05 #78 [Verbose] >             | string => to_std_string x
00:00:05 #79 [Verbose] >             | std_string => x
00:00:05 #80 [Verbose] >             | _ => format_pretty `t x
00:00:05 #81 [Verbose] >         result
00:00:05 #82 [Verbose] >
00:00:05 #83 [Verbose] > inl raw_string_literal (s : string) : ref' str =
00:00:05 #84 [Verbose] >     emit_expr () $"\"r#\\\"\" + !s + \"\\\"#\""
00:00:05 #85 [Verbose] >
00:00:05 #86 [Verbose] > inl (~#) (s : string) : ref' str =
00:00:05 #87 [Verbose] >     raw_string_literal s
00:00:05 #88 [Verbose] > Building /tmp/!dotnet-repl/20240226-2103-3813-1340-19e1b4e8e904/main.spi
00:00:06 #89 [Verbose] >
00:00:06 #90 [Verbose] > ╭─[ 153.84ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #91 [Verbose] > │ ()                                                                           │
00:00:06 #92 [Verbose] > │                                                                              │
00:00:06 #93 [Verbose] > │                                                                              │
00:00:06 #94 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #95 [Verbose] >
00:00:06 #96 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #97 [Verbose] > nominal task_name = string
00:00:06 #98 [Verbose] >
00:00:06 #99 [Verbose] > union manual_scheduling =
00:00:06 #100 [Verbose] >     | WithSuggestion
00:00:06 #101 [Verbose] >     | WithoutSuggestion
00:00:06 #102 [Verbose] >
00:00:06 #103 [Verbose] > union recurrency_offset =
00:00:06 #104 [Verbose] >     | Days : i32
00:00:06 #105 [Verbose] >     | Weeks : i32
00:00:06 #106 [Verbose] >     | Months : i32
00:00:06 #107 [Verbose] >
00:00:06 #108 [Verbose] > union day_of_week =
00:00:06 #109 [Verbose] >     | Sunday
00:00:06 #110 [Verbose] >     | Monday
00:00:06 #111 [Verbose] >     | Tuesday
00:00:06 #112 [Verbose] >     | Wednesday
00:00:06 #113 [Verbose] >     | Thursday
00:00:06 #114 [Verbose] >     | Friday
00:00:06 #115 [Verbose] >     | Saturday
00:00:06 #116 [Verbose] >
00:00:06 #117 [Verbose] > union month =
00:00:06 #118 [Verbose] >     | January
00:00:06 #119 [Verbose] >     | February
00:00:06 #120 [Verbose] >     | March
00:00:06 #121 [Verbose] >     | April
00:00:06 #122 [Verbose] >     | May
00:00:06 #123 [Verbose] >     | June
00:00:06 #124 [Verbose] >     | July
00:00:06 #125 [Verbose] >     | August
00:00:06 #126 [Verbose] >     | September
00:00:06 #127 [Verbose] >     | October
00:00:06 #128 [Verbose] >     | November
00:00:06 #129 [Verbose] >     | December
00:00:06 #130 [Verbose] >
00:00:06 #131 [Verbose] > nominal day = i32
00:00:06 #132 [Verbose] > nominal year = i32
00:00:06 #133 [Verbose] >
00:00:06 #134 [Verbose] > union fixed_recurrency =
00:00:06 #135 [Verbose] >     | Weekly : day_of_week
00:00:06 #136 [Verbose] >     | Monthly : day
00:00:06 #137 [Verbose] >     | Yearly : day * month
00:00:06 #138 [Verbose] >
00:00:06 #139 [Verbose] > union recurrency =
00:00:06 #140 [Verbose] >     | Offset : recurrency_offset
00:00:06 #141 [Verbose] >     | Fixed : list fixed_recurrency
00:00:06 #142 [Verbose] >
00:00:06 #143 [Verbose] > union scheduling =
00:00:06 #144 [Verbose] >     | Manual : manual_scheduling
00:00:06 #145 [Verbose] >     | Recurrent : recurrency
00:00:06 #146 [Verbose] >
00:00:06 #147 [Verbose] > type task =
00:00:06 #148 [Verbose] >     {
00:00:06 #149 [Verbose] >         name : task_name
00:00:06 #150 [Verbose] >         scheduling : scheduling
00:00:06 #151 [Verbose] >     }
00:00:06 #152 [Verbose] >
00:00:06 #153 [Verbose] > type date =
00:00:06 #154 [Verbose] >     {
00:00:06 #155 [Verbose] >         year : year
00:00:06 #156 [Verbose] >         month : month
00:00:06 #157 [Verbose] >         day : day
00:00:06 #158 [Verbose] >     }
00:00:06 #159 [Verbose] >
00:00:06 #160 [Verbose] > union status =
00:00:06 #161 [Verbose] >     | Postponed : option ()
00:00:06 #162 [Verbose] >
00:00:06 #163 [Verbose] > type event =
00:00:06 #164 [Verbose] >     {
00:00:06 #165 [Verbose] >         date : date
00:00:06 #166 [Verbose] >         status : status
00:00:06 #167 [Verbose] >     }
00:00:06 #168 [Verbose] >
00:00:06 #169 [Verbose] > type task_template =
00:00:06 #170 [Verbose] >     {
00:00:06 #171 [Verbose] >         task : task
00:00:06 #172 [Verbose] >         events : list event
00:00:06 #173 [Verbose] >     }
00:00:06 #174 [Verbose] > Building /tmp/!dotnet-repl/20240226-2103-3828-2822-204976228d8d/main.spi
00:00:06 #175 [Verbose] >
00:00:06 #176 [Verbose] > ╭─[ 146.82ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #177 [Verbose] > │ ()                                                                           │
00:00:06 #178 [Verbose] > │                                                                              │
00:00:06 #179 [Verbose] > │                                                                              │
00:00:06 #180 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #181 [Verbose] >
00:00:06 #182 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #183 [Verbose] > // // test
00:00:06 #184 [Verbose] > // // rust=
00:00:06 #185 [Verbose] >
00:00:06 #186 [Verbose] > types ()
00:00:06 #187 [Verbose] > Building /tmp/!dotnet-repl/20240226-2103-3842-4291-416821f89b6a/main.spi
00:00:41 #188 [Verbose] >
00:00:41 #189 [Verbose] > ╭─[ 35.78s - return value ]────────────────────────────────────────────────────╮
00:00:41 #190 [Verbose] > │ .rs output:                                                                  │
00:00:41 #191 [Verbose] > │                                                                              │
00:00:41 #192 [Verbose] > │                                                                              │
00:00:41 #193 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:41 #194 [Verbose] >
00:00:41 #195 [Verbose] > ╭─[ 35.79s - stdout ]──────────────────────────────────────────────────────────╮
00:00:41 #196 [Verbose] > │                                                                              │
00:00:41 #197 [Verbose] > │ .fsx:                                                                        │
00:00:41 #198 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type            │
00:00:41 #199 [Verbose] > │ std_string_String = class end                                                │
00:00:41 #200 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end        │
00:00:41 #201 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end            │
00:00:41 #202 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:41 #203 [Verbose] > │     ()                                                                       │
00:00:41 #204 [Verbose] > │ method0()                                                                    │
00:00:41 #205 [Verbose] > │                                                                              │
00:00:41 #206 [Verbose] > │ .rs:                                                                         │
00:00:41 #207 [Verbose] > │ #![allow(dead_code,)]                                                        │
00:00:41 #208 [Verbose] > │ #![allow(non_camel_case_types,)]                                             │
00:00:41 #209 [Verbose] > │ #![allow(non_snake_case,)]                                                   │
00:00:41 #210 [Verbose] > │ #![allow(non_upper_case_globals,)]                                           │
00:00:41 #211 [Verbose] > │ #![allow(unreachable_code,)]                                                 │
00:00:41 #212 [Verbose] > │ #![allow(unused_attributes,)]                                                │
00:00:41 #213 [Verbose] > │ #![allow(unused_imports,)]                                                   │
00:00:41 #214 [Verbose] > │ #![allow(unused_macros,)]                                                    │
00:00:41 #215 [Verbose] > │ #![allow(unused_parens,)]                                                    │
00:00:41 #216 [Verbose] > │ #![allow(unused_variables,)]                                                 │
00:00:41 #217 [Verbose] > │ mod module_e32d1f60 {                                                        │
00:00:41 #218 [Verbose] > │     pub mod Fs_rs {                                                          │
00:00:41 #219 [Verbose] > │         use super::*;                                                        │
00:00:41 #220 [Verbose] > │         use fable_library_rust::Native_::on_startup;                         │
00:00:41 #221 [Verbose] > │         pub fn method0() { (); }                                             │
00:00:41 #222 [Verbose] > │         on_startup!(Fs_rs::method0());                                       │
00:00:41 #223 [Verbose] > │     }                                                                        │
00:00:41 #224 [Verbose] > │ }                                                                            │
00:00:41 #225 [Verbose] > │ pub use module_e32d1f60::*;                                                  │
00:00:41 #226 [Verbose] > │                                                                              │
00:00:41 #227 [Verbose] > │                                                                              │
00:00:41 #228 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:41 #229 [Verbose] >
00:00:41 #230 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:41 #231 [Verbose] > // // test
00:00:41 #232 [Verbose] > // // rust=
00:00:41 #233 [Verbose] >
00:00:41 #234 [Verbose] > inl get_tasks () : list task_template =
00:00:41 #235 [Verbose] >     [[
00:00:41 #236 [Verbose] >         {
00:00:41 #237 [Verbose] >             task =
00:00:41 #238 [Verbose] >                 {
00:00:41 #239 [Verbose] >                     name = task_name "01"
00:00:41 #240 [Verbose] >                     scheduling = Manual WithSuggestion
00:00:41 #241 [Verbose] >                 }
00:00:41 #242 [Verbose] >             events = [[]]
00:00:41 #243 [Verbose] >         }
00:00:41 #244 [Verbose] >         {
00:00:41 #245 [Verbose] >             task =
00:00:41 #246 [Verbose] >                 {
00:00:41 #247 [Verbose] >                     name = task_name "02"
00:00:41 #248 [Verbose] >                     scheduling = Manual WithSuggestion
00:00:41 #249 [Verbose] >                 }
00:00:41 #250 [Verbose] >             events = [[]]
00:00:41 #251 [Verbose] >         }
00:00:41 #252 [Verbose] >         {
00:00:41 #253 [Verbose] >             task =
00:00:41 #254 [Verbose] >                 {
00:00:41 #255 [Verbose] >                     name = task_name "03"
00:00:41 #256 [Verbose] >                     scheduling = Manual WithSuggestion
00:00:41 #257 [Verbose] >                 }
00:00:41 #258 [Verbose] >             events = [[]]
00:00:41 #259 [Verbose] >         }
00:00:41 #260 [Verbose] >     ]]
00:00:41 #261 [Verbose] >
00:00:41 #262 [Verbose] > types ()
00:00:41 #263 [Verbose] > get_tasks () |> format_pretty |> console.write_line
00:00:42 #264 [Verbose] > Building /tmp/!dotnet-repl/20240226-2104-1421-2174-28c66159e29d/main.spi
00:00:45 #265 [Verbose] >
00:00:45 #266 [Verbose] > ╭─[ 3.24s - return value ]─────────────────────────────────────────────────────╮
00:00:45 #267 [Verbose] > │ .rs output:                                                                  │
00:00:45 #268 [Verbose] > │ UH2_0(                                                                       │
00:00:45 #269 [Verbose] > │     UH0_1,                                                                   │
00:00:45 #270 [Verbose] > │     "01",                                                                    │
00:00:45 #271 [Verbose] > │     US4_0(                                                                   │
00:00:45 #272 [Verbose] > │         US3_0,                                                               │
00:00:45 #273 [Verbose] > │     ),                                                                       │
00:00:45 #274 [Verbose] > │     UH2_0(                                                                   │
00:00:45 #275 [Verbose] > │         UH0_1,                                                               │
00:00:45 #276 [Verbose] > │         "02",                                                                │
00:00:45 #277 [Verbose] > │         US4_0(                                                               │
00:00:45 #278 [Verbose] > │             US3_0,                                                           │
00:00:45 #279 [Verbose] > │         ),                                                                   │
00:00:45 #280 [Verbose] > │         UH2_0(                                                               │
00:00:45 #281 [Verbose] > │             UH0_1,                                                           │
00:00:45 #282 [Verbose] > │             "03",                                                            │
00:00:45 #283 [Verbose] > │             US4_0(                                                           │
00:00:45 #284 [Verbose] > │                 US3_0,                                                       │
00:00:45 #285 [Verbose] > │             ),                                                               │
00:00:45 #286 [Verbose] > │             UH2_1,                                                           │
00:00:45 #287 [Verbose] > │         ),                                                                   │
00:00:45 #288 [Verbose] > │     ),                                                                       │
00:00:45 #289 [Verbose] > │ )                                                                            │
00:00:45 #290 [Verbose] > │                                                                              │
00:00:45 #291 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 #292 [Verbose] >
00:00:45 #293 [Verbose] > ╭─[ 3.25s - stdout ]───────────────────────────────────────────────────────────╮
00:00:45 #294 [Verbose] > │                                                                              │
00:00:45 #295 [Verbose] > │ .fsx:                                                                        │
00:00:45 #296 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type            │
00:00:45 #297 [Verbose] > │ std_string_String = class end                                                │
00:00:45 #298 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end        │
00:00:45 #299 [Verbose] > │ [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end            │
00:00:45 #300 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:45 #301 [Verbose] > │     | US0_0                                                                  │
00:00:45 #302 [Verbose] > │     | US0_1                                                                  │
00:00:45 #303 [Verbose] > │     | US0_2                                                                  │
00:00:45 #304 [Verbose] > │     | US0_3                                                                  │
00:00:45 #305 [Verbose] > │     | US0_4                                                                  │
00:00:45 #306 [Verbose] > │     | US0_5                                                                  │
00:00:45 #307 [Verbose] > │     | US0_6                                                                  │
00:00:45 #308 [Verbose] > │     | US0_7                                                                  │
00:00:45 #309 [Verbose] > │     | US0_8                                                                  │
00:00:45 #310 [Verbose] > │     | US0_9                                                                  │
00:00:45 #311 [Verbose] > │     | US0_10                                                                 │
00:00:45 #312 [Verbose] > │     | US0_11                                                                 │
00:00:45 #313 [Verbose] > │ and [<Struct>] US2 =                                                         │
00:00:45 #314 [Verbose] > │     | US2_0                                                                  │
00:00:45 #315 [Verbose] > │     | US2_1                                                                  │
00:00:45 #316 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:45 #317 [Verbose] > │     | US1_0 of f0_0 : US2                                                    │
00:00:45 #318 [Verbose] > │ and UH0 =                                                                    │
00:00:45 #319 [Verbose] > │     | UH0_0 of int32 * US0 * int32 * US1 * UH0                               │
00:00:45 #320 [Verbose] > │     | UH0_1                                                                  │
00:00:45 #321 [Verbose] > │ and [<Struct>] US3 =                                                         │
00:00:45 #322 [Verbose] > │     | US3_0                                                                  │
00:00:45 #323 [Verbose] > │     | US3_1                                                                  │
00:00:45 #324 [Verbose] > │ and [<Struct>] US7 =                                                         │
00:00:45 #325 [Verbose] > │     | US7_0                                                                  │
00:00:45 #326 [Verbose] > │     | US7_1                                                                  │
00:00:45 #327 [Verbose] > │     | US7_2                                                                  │
00:00:45 #328 [Verbose] > │     | US7_3                                                                  │
00:00:45 #329 [Verbose] > │     | US7_4                                                                  │
00:00:45 #330 [Verbose] > │     | US7_5                                                                  │
00:00:45 #331 [Verbose] > │     | US7_6                                                                  │
00:00:45 #332 [Verbose] > │ and [<Struct>] US6 =                                                         │
00:00:45 #333 [Verbose] > │     | US6_0 of f0_0 : int32                                                  │
00:00:45 #334 [Verbose] > │     | US6_1 of f1_0 : US7                                                    │
00:00:45 #335 [Verbose] > │     | US6_2 of f2_0 : int32 * f2_1 : US0                                     │
00:00:45 #336 [Verbose] > │ and UH1 =                                                                    │
00:00:45 #337 [Verbose] > │     | UH1_0 of US6 * UH1                                                     │
00:00:45 #338 [Verbose] > │     | UH1_1                                                                  │
00:00:45 #339 [Verbose] > │ and [<Struct>] US8 =                                                         │
00:00:45 #340 [Verbose] > │     | US8_0 of f0_0 : int32                                                  │
00:00:45 #341 [Verbose] > │     | US8_1 of f1_0 : int32                                                  │
00:00:45 #342 [Verbose] > │     | US8_2 of f2_0 : int32                                                  │
00:00:45 #343 [Verbose] > │ and [<Struct>] US5 =                                                         │
00:00:45 #344 [Verbose] > │     | US5_0 of f0_0 : UH1                                                    │
00:00:45 #345 [Verbose] > │     | US5_1 of f1_0 : US8                                                    │
00:00:45 #346 [Verbose] > │ and [<Struct>] US4 =                                                         │
00:00:45 #347 [Verbose] > │     | US4_0 of f0_0 : US3                                                    │
00:00:45 #348 [Verbose] > │     | US4_1 of f1_0 : US5                                                    │
00:00:45 #349 [Verbose] > │ and UH2 =                                                                    │
00:00:45 #350 [Verbose] > │     | UH2_0 of UH0 * string * US4 * UH2                                      │
00:00:45 #351 [Verbose] > │     | UH2_1                                                                  │
00:00:45 #352 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:45 #353 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:45 #354 [Verbose] > │     let v1 : string = "01"                                                   │
00:00:45 #355 [Verbose] > │     let v2 : US3 = US3_0                                                     │
00:00:45 #356 [Verbose] > │     let v3 : US4 = US4_0(v2)                                                 │
00:00:45 #357 [Verbose] > │     let v4 : UH0 = UH0_1                                                     │
00:00:45 #358 [Verbose] > │     let v5 : string = "02"                                                   │
00:00:45 #359 [Verbose] > │     let v6 : US3 = US3_0                                                     │
00:00:45 #360 [Verbose] > │     let v7 : US4 = US4_0(v6)                                                 │
00:00:45 #361 [Verbose] > │     let v8 : UH0 = UH0_1                                                     │
00:00:45 #362 [Verbose] > │     let v9 : string = "03"                                                   │
00:00:45 #363 [Verbose] > │     let v10 : US3 = US3_0                                                    │
00:00:45 #364 [Verbose] > │     let v11 : US4 = US4_0(v10)                                               │
00:00:45 #365 [Verbose] > │     let v12 : UH2 = UH2_1                                                    │
00:00:45 #366 [Verbose] > │     let v13 : UH2 = UH2_0(v8, v9, v11, v12)                                  │
00:00:45 #367 [Verbose] > │     let v14 : UH2 = UH2_0(v4, v5, v7, v13)                                   │
00:00:45 #368 [Verbose] > │     let v15 : UH2 = UH2_0(v0, v1, v3, v14)                                   │
00:00:45 #369 [Verbose] > │     let v16 : string = "format!(\"{:#?}\", $0)"                              │
00:00:45 #370 [Verbose] > │     let v17 : std_string_String = Fable.Core.RustInterop.emitRustExpr v15    │
00:00:45 #371 [Verbose] > │ v16                                                                          │
00:00:45 #372 [Verbose] > │     System.Console.WriteLine v17                                             │
00:00:45 #373 [Verbose] > │     ()                                                                       │
00:00:45 #374 [Verbose] > │ method0()                                                                    │
00:00:45 #375 [Verbose] > │                                                                              │
00:00:45 #376 [Verbose] > │ .rs:                                                                         │
00:00:45 #377 [Verbose] > │ #![allow(dead_code,)]                                                        │
00:00:45 #378 [Verbose] > │ #![allow(non_camel_case_types,)]                                             │
00:00:45 #379 [Verbose] > │ #![allow(non_snake_case,)]                                                   │
00:00:45 #380 [Verbose] > │ #![allow(non_upper_case_globals,)]                                           │
00:00:45 #381 [Verbose] > │ #![allow(unreachable_code,)]                                                 │
00:00:45 #382 [Verbose] > │ #![allow(unused_attributes,)]                                                │
00:00:45 #383 [Verbose] > │ #![allow(unused_imports,)]                                                   │
00:00:45 #384 [Verbose] > │ #![allow(unused_macros,)]                                                    │
00:00:45 #385 [Verbose] > │ #![allow(unused_parens,)]                                                    │
00:00:45 #386 [Verbose] > │ #![allow(unused_variables,)]                                                 │
00:00:45 #387 [Verbose] > │ mod module_e32d1f60 {                                                        │
00:00:45 #388 [Verbose] > │     pub mod Fs_rs {                                                          │
00:00:45 #389 [Verbose] > │         use super::*;                                                        │
00:00:45 #390 [Verbose] > │         use fable_library_rust::Native_::Any;                                │
00:00:45 #391 [Verbose] > │         use fable_library_rust::Native_::LrcPtr;                             │
00:00:45 #392 [Verbose] > │         use fable_library_rust::Native_::MutCell;                            │
00:00:45 #393 [Verbose] > │         use fable_library_rust::Native_::on_startup;                         │
00:00:45 #394 [Verbose] > │         use fable_library_rust::String_::string;                             │
00:00:45 #395 [Verbose] > │         #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)]      │
00:00:45 #396 [Verbose] > │         pub enum US0 {                                                       │
00:00:45 #397 [Verbose] > │             US0_0,                                                           │
00:00:45 #398 [Verbose] > │             US0_1,                                                           │
00:00:45 #399 [Verbose] > │             US0_2,                                                           │
00:00:45 #400 [Verbose] > │             US0_3,                                                           │
00:00:45 #401 [Verbose] > │             US0_4,                                                           │
00:00:45 #402 [Verbose] > │             US0_5,                                                           │
00:00:45 #403 [Verbose] > │             US0_6,                                                           │
00:00:45 #404 [Verbose] > │             US0_7,                                                           │
00:00:45 #405 [Verbose] > │             US0_8,                                                           │
00:00:45 #406 [Verbose] > │             US0_9,                                                           │
00:00:45 #407 [Verbose] > │             US0_10,                                                          │
00:00:45 #408 [Verbose] > │             US0_11,                                                          │
00:00:45 #409 [Verbose] > │         }                                                                    │
00:00:45 #410 [Verbose] > │         impl Fs_rs::US0 {                                                    │
00:00:45 #411 [Verbose] > │             pub fn get_IsUS0_0(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #412 [Verbose] > │              -> bool {                                                       │
00:00:45 #413 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #414 [Verbose] > │             }                                                                │
00:00:45 #415 [Verbose] > │             pub fn get_IsUS0_1(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #416 [Verbose] > │              -> bool {                                                       │
00:00:45 #417 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #418 [Verbose] > │             }                                                                │
00:00:45 #419 [Verbose] > │             pub fn get_IsUS0_2(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #420 [Verbose] > │              -> bool {                                                       │
00:00:45 #421 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #422 [Verbose] > │             }                                                                │
00:00:45 #423 [Verbose] > │             pub fn get_IsUS0_3(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #424 [Verbose] > │              -> bool {                                                       │
00:00:45 #425 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #426 [Verbose] > │             }                                                                │
00:00:45 #427 [Verbose] > │             pub fn get_IsUS0_4(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #428 [Verbose] > │              -> bool {                                                       │
00:00:45 #429 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #430 [Verbose] > │             }                                                                │
00:00:45 #431 [Verbose] > │             pub fn get_IsUS0_5(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #432 [Verbose] > │              -> bool {                                                       │
00:00:45 #433 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #434 [Verbose] > │             }                                                                │
00:00:45 #435 [Verbose] > │             pub fn get_IsUS0_6(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #436 [Verbose] > │              -> bool {                                                       │
00:00:45 #437 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #438 [Verbose] > │             }                                                                │
00:00:45 #439 [Verbose] > │             pub fn get_IsUS0_7(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #440 [Verbose] > │              -> bool {                                                       │
00:00:45 #441 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #442 [Verbose] > │             }                                                                │
00:00:45 #443 [Verbose] > │             pub fn get_IsUS0_8(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #444 [Verbose] > │              -> bool {                                                       │
00:00:45 #445 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #446 [Verbose] > │             }                                                                │
00:00:45 #447 [Verbose] > │             pub fn get_IsUS0_9(this_: &MutCell<Fs_rs::US0>, unitArg: ())     │
00:00:45 #448 [Verbose] > │              -> bool {                                                       │
00:00:45 #449 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #450 [Verbose] > │             }                                                                │
00:00:45 #451 [Verbose] > │             pub fn get_IsUS0_10(this_: &MutCell<Fs_rs::US0>, unitArg: ())    │
00:00:45 #452 [Verbose] > │              -> bool {                                                       │
00:00:45 #453 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #454 [Verbose] > │             }                                                                │
00:00:45 #455 [Verbose] > │             pub fn get_IsUS0_11(this_: &MutCell<Fs_rs::US0>, unitArg: ())    │
00:00:45 #456 [Verbose] > │              -> bool {                                                       │
00:00:45 #457 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #458 [Verbose] > │             }                                                                │
00:00:45 #459 [Verbose] > │         }                                                                    │
00:00:45 #460 [Verbose] > │         impl core::fmt::Display for Fs_rs::US0 {                             │
00:00:45 #461 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #462 [Verbose] > │ {                                                                            │
00:00:45 #463 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #464 [Verbose] > │             }                                                                │
00:00:45 #465 [Verbose] > │         }                                                                    │
00:00:45 #466 [Verbose] > │         #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)]      │
00:00:45 #467 [Verbose] > │         pub enum US2 { US2_0, US2_1, }                                       │
00:00:45 #468 [Verbose] > │         impl Fs_rs::US2 {                                                    │
00:00:45 #469 [Verbose] > │             pub fn get_IsUS2_0(this_: &MutCell<Fs_rs::US2>, unitArg: ())     │
00:00:45 #470 [Verbose] > │              -> bool {                                                       │
00:00:45 #471 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #472 [Verbose] > │             }                                                                │
00:00:45 #473 [Verbose] > │             pub fn get_IsUS2_1(this_: &MutCell<Fs_rs::US2>, unitArg: ())     │
00:00:45 #474 [Verbose] > │              -> bool {                                                       │
00:00:45 #475 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #476 [Verbose] > │             }                                                                │
00:00:45 #477 [Verbose] > │         }                                                                    │
00:00:45 #478 [Verbose] > │         impl core::fmt::Display for Fs_rs::US2 {                             │
00:00:45 #479 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #480 [Verbose] > │ {                                                                            │
00:00:45 #481 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #482 [Verbose] > │             }                                                                │
00:00:45 #483 [Verbose] > │         }                                                                    │
00:00:45 #484 [Verbose] > │         #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)]      │
00:00:45 #485 [Verbose] > │         pub enum US1 { US1_0(Fs_rs::US2), }                                  │
00:00:45 #486 [Verbose] > │         impl Fs_rs::US1 {                                                    │
00:00:45 #487 [Verbose] > │             pub fn get_IsUS1_0(this_: &MutCell<Fs_rs::US1>, unitArg: ())     │
00:00:45 #488 [Verbose] > │              -> bool {                                                       │
00:00:45 #489 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #490 [Verbose] > │             }                                                                │
00:00:45 #491 [Verbose] > │         }                                                                    │
00:00:45 #492 [Verbose] > │         impl core::fmt::Display for Fs_rs::US1 {                             │
00:00:45 #493 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #494 [Verbose] > │ {                                                                            │
00:00:45 #495 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #496 [Verbose] > │             }                                                                │
00:00:45 #497 [Verbose] > │         }                                                                    │
00:00:45 #498 [Verbose] > │         #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)]            │
00:00:45 #499 [Verbose] > │         pub enum UH0 {                                                       │
00:00:45 #500 [Verbose] > │             UH0_0(i32, Fs_rs::US0, i32, Fs_rs::US1, LrcPtr<Fs_rs::UH0>),     │
00:00:45 #501 [Verbose] > │             UH0_1,                                                           │
00:00:45 #502 [Verbose] > │         }                                                                    │
00:00:45 #503 [Verbose] > │         impl Fs_rs::UH0 {                                                    │
00:00:45 #504 [Verbose] > │             pub fn get_IsUH0_0(this_: LrcPtr<Fs_rs::UH0>, unitArg: ())       │
00:00:45 #505 [Verbose] > │              -> bool {                                                       │
00:00:45 #506 [Verbose] > │                 if let Fs_rs::UH0::UH0_0(this__0_0, this__0_1, this__0_2,    │
00:00:45 #507 [Verbose] > │                                          this__0_3, this__0_4) =             │
00:00:45 #508 [Verbose] > │                        this_.as_ref() {                                      │
00:00:45 #509 [Verbose] > │                     true                                                     │
00:00:45 #510 [Verbose] > │                 } else { false }                                             │
00:00:45 #511 [Verbose] > │             }                                                                │
00:00:45 #512 [Verbose] > │             pub fn get_IsUH0_1(this_: LrcPtr<Fs_rs::UH0>, unitArg: ())       │
00:00:45 #513 [Verbose] > │              -> bool {                                                       │
00:00:45 #514 [Verbose] > │                 if let Fs_rs::UH0::UH0_1 = this_.as_ref() {                  │
00:00:45 #515 [Verbose] > │                     true                                                     │
00:00:45 #516 [Verbose] > │                 } else { false }                                             │
00:00:45 #517 [Verbose] > │             }                                                                │
00:00:45 #518 [Verbose] > │         }                                                                    │
00:00:45 #519 [Verbose] > │         impl core::fmt::Display for Fs_rs::UH0 {                             │
00:00:45 #520 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #521 [Verbose] > │ {                                                                            │
00:00:45 #522 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #523 [Verbose] > │             }                                                                │
00:00:45 #524 [Verbose] > │         }                                                                    │
00:00:45 #525 [Verbose] > │         #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)]      │
00:00:45 #526 [Verbose] > │         pub enum US3 { US3_0, US3_1, }                                       │
00:00:45 #527 [Verbose] > │         impl Fs_rs::US3 {                                                    │
00:00:45 #528 [Verbose] > │             pub fn get_IsUS3_0(this_: &MutCell<Fs_rs::US3>, unitArg: ())     │
00:00:45 #529 [Verbose] > │              -> bool {                                                       │
00:00:45 #530 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #531 [Verbose] > │             }                                                                │
00:00:45 #532 [Verbose] > │             pub fn get_IsUS3_1(this_: &MutCell<Fs_rs::US3>, unitArg: ())     │
00:00:45 #533 [Verbose] > │              -> bool {                                                       │
00:00:45 #534 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #535 [Verbose] > │             }                                                                │
00:00:45 #536 [Verbose] > │         }                                                                    │
00:00:45 #537 [Verbose] > │         impl core::fmt::Display for Fs_rs::US3 {                             │
00:00:45 #538 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #539 [Verbose] > │ {                                                                            │
00:00:45 #540 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #541 [Verbose] > │             }                                                                │
00:00:45 #542 [Verbose] > │         }                                                                    │
00:00:45 #543 [Verbose] > │         #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)]      │
00:00:45 #544 [Verbose] > │         pub enum US7 { US7_0, US7_1, US7_2, US7_3, US7_4, US7_5, US7_6, }    │
00:00:45 #545 [Verbose] > │         impl Fs_rs::US7 {                                                    │
00:00:45 #546 [Verbose] > │             pub fn get_IsUS7_0(this_: &MutCell<Fs_rs::US7>, unitArg: ())     │
00:00:45 #547 [Verbose] > │              -> bool {                                                       │
00:00:45 #548 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #549 [Verbose] > │             }                                                                │
00:00:45 #550 [Verbose] > │             pub fn get_IsUS7_1(this_: &MutCell<Fs_rs::US7>, unitArg: ())     │
00:00:45 #551 [Verbose] > │              -> bool {                                                       │
00:00:45 #552 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #553 [Verbose] > │             }                                                                │
00:00:45 #554 [Verbose] > │             pub fn get_IsUS7_2(this_: &MutCell<Fs_rs::US7>, unitArg: ())     │
00:00:45 #555 [Verbose] > │              -> bool {                                                       │
00:00:45 #556 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #557 [Verbose] > │             }                                                                │
00:00:45 #558 [Verbose] > │             pub fn get_IsUS7_3(this_: &MutCell<Fs_rs::US7>, unitArg: ())     │
00:00:45 #559 [Verbose] > │              -> bool {                                                       │
00:00:45 #560 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #561 [Verbose] > │             }                                                                │
00:00:45 #562 [Verbose] > │             pub fn get_IsUS7_4(this_: &MutCell<Fs_rs::US7>, unitArg: ())     │
00:00:45 #563 [Verbose] > │              -> bool {                                                       │
00:00:45 #564 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #565 [Verbose] > │             }                                                                │
00:00:45 #566 [Verbose] > │             pub fn get_IsUS7_5(this_: &MutCell<Fs_rs::US7>, unitArg: ())     │
00:00:45 #567 [Verbose] > │              -> bool {                                                       │
00:00:45 #568 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #569 [Verbose] > │             }                                                                │
00:00:45 #570 [Verbose] > │             pub fn get_IsUS7_6(this_: &MutCell<Fs_rs::US7>, unitArg: ())     │
00:00:45 #571 [Verbose] > │              -> bool {                                                       │
00:00:45 #572 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #573 [Verbose] > │             }                                                                │
00:00:45 #574 [Verbose] > │         }                                                                    │
00:00:45 #575 [Verbose] > │         impl core::fmt::Display for Fs_rs::US7 {                             │
00:00:45 #576 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #577 [Verbose] > │ {                                                                            │
00:00:45 #578 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #579 [Verbose] > │             }                                                                │
00:00:45 #580 [Verbose] > │         }                                                                    │
00:00:45 #581 [Verbose] > │         #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)]      │
00:00:45 #582 [Verbose] > │         pub enum US6 {                                                       │
00:00:45 #583 [Verbose] > │             US6_0(i32),                                                      │
00:00:45 #584 [Verbose] > │             US6_1(Fs_rs::US7),                                               │
00:00:45 #585 [Verbose] > │             US6_2(i32, Fs_rs::US0),                                          │
00:00:45 #586 [Verbose] > │         }                                                                    │
00:00:45 #587 [Verbose] > │         impl Fs_rs::US6 {                                                    │
00:00:45 #588 [Verbose] > │             pub fn get_IsUS6_0(this_: &MutCell<Fs_rs::US6>, unitArg: ())     │
00:00:45 #589 [Verbose] > │              -> bool {                                                       │
00:00:45 #590 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #591 [Verbose] > │             }                                                                │
00:00:45 #592 [Verbose] > │             pub fn get_IsUS6_1(this_: &MutCell<Fs_rs::US6>, unitArg: ())     │
00:00:45 #593 [Verbose] > │              -> bool {                                                       │
00:00:45 #594 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #595 [Verbose] > │             }                                                                │
00:00:45 #596 [Verbose] > │             pub fn get_IsUS6_2(this_: &MutCell<Fs_rs::US6>, unitArg: ())     │
00:00:45 #597 [Verbose] > │              -> bool {                                                       │
00:00:45 #598 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #599 [Verbose] > │             }                                                                │
00:00:45 #600 [Verbose] > │         }                                                                    │
00:00:45 #601 [Verbose] > │         impl core::fmt::Display for Fs_rs::US6 {                             │
00:00:45 #602 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #603 [Verbose] > │ {                                                                            │
00:00:45 #604 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #605 [Verbose] > │             }                                                                │
00:00:45 #606 [Verbose] > │         }                                                                    │
00:00:45 #607 [Verbose] > │         #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)]            │
00:00:45 #608 [Verbose] > │         pub enum UH1 { UH1_0(Fs_rs::US6, LrcPtr<Fs_rs::UH1>), UH1_1, }       │
00:00:45 #609 [Verbose] > │         impl Fs_rs::UH1 {                                                    │
00:00:45 #610 [Verbose] > │             pub fn get_IsUH1_0(this_: LrcPtr<Fs_rs::UH1>, unitArg: ())       │
00:00:45 #611 [Verbose] > │              -> bool {                                                       │
00:00:45 #612 [Verbose] > │                 if let Fs_rs::UH1::UH1_0(this__0_0, this__0_1) =             │
00:00:45 #613 [Verbose] > │                        this_.as_ref() {                                      │
00:00:45 #614 [Verbose] > │                     true                                                     │
00:00:45 #615 [Verbose] > │                 } else { false }                                             │
00:00:45 #616 [Verbose] > │             }                                                                │
00:00:45 #617 [Verbose] > │             pub fn get_IsUH1_1(this_: LrcPtr<Fs_rs::UH1>, unitArg: ())       │
00:00:45 #618 [Verbose] > │              -> bool {                                                       │
00:00:45 #619 [Verbose] > │                 if let Fs_rs::UH1::UH1_1 = this_.as_ref() {                  │
00:00:45 #620 [Verbose] > │                     true                                                     │
00:00:45 #621 [Verbose] > │                 } else { false }                                             │
00:00:45 #622 [Verbose] > │             }                                                                │
00:00:45 #623 [Verbose] > │         }                                                                    │
00:00:45 #624 [Verbose] > │         impl core::fmt::Display for Fs_rs::UH1 {                             │
00:00:45 #625 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #626 [Verbose] > │ {                                                                            │
00:00:45 #627 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #628 [Verbose] > │             }                                                                │
00:00:45 #629 [Verbose] > │         }                                                                    │
00:00:45 #630 [Verbose] > │         #[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Hash, Eq,)]      │
00:00:45 #631 [Verbose] > │         pub enum US8 { US8_0(i32), US8_1(i32), US8_2(i32), }                 │
00:00:45 #632 [Verbose] > │         impl Fs_rs::US8 {                                                    │
00:00:45 #633 [Verbose] > │             pub fn get_IsUS8_0(this_: &MutCell<Fs_rs::US8>, unitArg: ())     │
00:00:45 #634 [Verbose] > │              -> bool {                                                       │
00:00:45 #635 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #636 [Verbose] > │             }                                                                │
00:00:45 #637 [Verbose] > │             pub fn get_IsUS8_1(this_: &MutCell<Fs_rs::US8>, unitArg: ())     │
00:00:45 #638 [Verbose] > │              -> bool {                                                       │
00:00:45 #639 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #640 [Verbose] > │             }                                                                │
00:00:45 #641 [Verbose] > │             pub fn get_IsUS8_2(this_: &MutCell<Fs_rs::US8>, unitArg: ())     │
00:00:45 #642 [Verbose] > │              -> bool {                                                       │
00:00:45 #643 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #644 [Verbose] > │             }                                                                │
00:00:45 #645 [Verbose] > │         }                                                                    │
00:00:45 #646 [Verbose] > │         impl core::fmt::Display for Fs_rs::US8 {                             │
00:00:45 #647 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #648 [Verbose] > │ {                                                                            │
00:00:45 #649 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #650 [Verbose] > │             }                                                                │
00:00:45 #651 [Verbose] > │         }                                                                    │
00:00:45 #652 [Verbose] > │         #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)]            │
00:00:45 #653 [Verbose] > │         pub enum US5 { US5_0(LrcPtr<Fs_rs::UH1>), US5_1(Fs_rs::US8), }       │
00:00:45 #654 [Verbose] > │         impl Fs_rs::US5 {                                                    │
00:00:45 #655 [Verbose] > │             pub fn get_IsUS5_0(this_: &MutCell<Fs_rs::US5>, unitArg: ())     │
00:00:45 #656 [Verbose] > │              -> bool {                                                       │
00:00:45 #657 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #658 [Verbose] > │             }                                                                │
00:00:45 #659 [Verbose] > │             pub fn get_IsUS5_1(this_: &MutCell<Fs_rs::US5>, unitArg: ())     │
00:00:45 #660 [Verbose] > │              -> bool {                                                       │
00:00:45 #661 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #662 [Verbose] > │             }                                                                │
00:00:45 #663 [Verbose] > │         }                                                                    │
00:00:45 #664 [Verbose] > │         impl core::fmt::Display for Fs_rs::US5 {                             │
00:00:45 #665 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #666 [Verbose] > │ {                                                                            │
00:00:45 #667 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #668 [Verbose] > │             }                                                                │
00:00:45 #669 [Verbose] > │         }                                                                    │
00:00:45 #670 [Verbose] > │         #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)]            │
00:00:45 #671 [Verbose] > │         pub enum US4 { US4_0(Fs_rs::US3), US4_1(Fs_rs::US5), }               │
00:00:45 #672 [Verbose] > │         impl Fs_rs::US4 {                                                    │
00:00:45 #673 [Verbose] > │             pub fn get_IsUS4_0(this_: &MutCell<Fs_rs::US4>, unitArg: ())     │
00:00:45 #674 [Verbose] > │              -> bool {                                                       │
00:00:45 #675 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #676 [Verbose] > │             }                                                                │
00:00:45 #677 [Verbose] > │             pub fn get_IsUS4_1(this_: &MutCell<Fs_rs::US4>, unitArg: ())     │
00:00:45 #678 [Verbose] > │              -> bool {                                                       │
00:00:45 #679 [Verbose] > │                 if unreachable!() { true } else { false }                    │
00:00:45 #680 [Verbose] > │             }                                                                │
00:00:45 #681 [Verbose] > │         }                                                                    │
00:00:45 #682 [Verbose] > │         impl core::fmt::Display for Fs_rs::US4 {                             │
00:00:45 #683 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #684 [Verbose] > │ {                                                                            │
00:00:45 #685 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #686 [Verbose] > │             }                                                                │
00:00:45 #687 [Verbose] > │         }                                                                    │
00:00:45 #688 [Verbose] > │         #[derive(Clone, Debug, PartialEq, PartialOrd, Hash, Eq,)]            │
00:00:45 #689 [Verbose] > │         pub enum UH2 {                                                       │
00:00:45 #690 [Verbose] > │             UH2_0(LrcPtr<Fs_rs::UH0>, string, Fs_rs::US4,                    │
00:00:45 #691 [Verbose] > │ LrcPtr<Fs_rs::UH2>),                                                         │
00:00:45 #692 [Verbose] > │             UH2_1,                                                           │
00:00:45 #693 [Verbose] > │         }                                                                    │
00:00:45 #694 [Verbose] > │         impl Fs_rs::UH2 {                                                    │
00:00:45 #695 [Verbose] > │             pub fn get_IsUH2_0(this_: LrcPtr<Fs_rs::UH2>, unitArg: ())       │
00:00:45 #696 [Verbose] > │              -> bool {                                                       │
00:00:45 #697 [Verbose] > │                 if let Fs_rs::UH2::UH2_0(this__0_0, this__0_1, this__0_2,    │
00:00:45 #698 [Verbose] > │                                          this__0_3) = this_.as_ref() {       │
00:00:45 #699 [Verbose] > │                     true                                                     │
00:00:45 #700 [Verbose] > │                 } else { false }                                             │
00:00:45 #701 [Verbose] > │             }                                                                │
00:00:45 #702 [Verbose] > │             pub fn get_IsUH2_1(this_: LrcPtr<Fs_rs::UH2>, unitArg: ())       │
00:00:45 #703 [Verbose] > │              -> bool {                                                       │
00:00:45 #704 [Verbose] > │                 if let Fs_rs::UH2::UH2_1 = this_.as_ref() {                  │
00:00:45 #705 [Verbose] > │                     true                                                     │
00:00:45 #706 [Verbose] > │                 } else { false }                                             │
00:00:45 #707 [Verbose] > │             }                                                                │
00:00:45 #708 [Verbose] > │         }                                                                    │
00:00:45 #709 [Verbose] > │         impl core::fmt::Display for Fs_rs::UH2 {                             │
00:00:45 #710 [Verbose] > │             fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │
00:00:45 #711 [Verbose] > │ {                                                                            │
00:00:45 #712 [Verbose] > │                 write!(f, "{}", core::any::type_name::<Self>())              │
00:00:45 #713 [Verbose] > │             }                                                                │
00:00:45 #714 [Verbose] > │         }                                                                    │
00:00:45 #715 [Verbose] > │         pub fn method0() {                                                   │
00:00:45 #716 [Verbose] > │             let v17: std::string::String =                                   │
00:00:45 #717 [Verbose] > │                 format!("{:#?}",                                             │
00:00:45 #718 [Verbose] > │ &LrcPtr::new(Fs_rs::UH2::UH2_0(LrcPtr::new(Fs_rs::UH0::UH0_1),               │
00:00:45 #719 [Verbose] > │                                                                              │
00:00:45 #720 [Verbose] > │ string("01"),                                                                │
00:00:45 #721 [Verbose] > │                                                                              │
00:00:45 #722 [Verbose] > │ Fs_rs::US4::US4_0(Fs_rs::US3::US3_0),                                        │
00:00:45 #723 [Verbose] > │                                                                              │
00:00:45 #724 [Verbose] > │ LrcPtr::new(Fs_rs::UH2::UH2_0(LrcPtr::new(Fs_rs::UH0::UH0_1),                │
00:00:45 #725 [Verbose] > │                                                                              │
00:00:45 #726 [Verbose] > │ string("02"),                                                                │
00:00:45 #727 [Verbose] > │                                                                              │
00:00:45 #728 [Verbose] > │ Fs_rs::US4::US4_0(Fs_rs::US3::US3_0),                                        │
00:00:45 #729 [Verbose] > │                                                                              │
00:00:45 #730 [Verbose] > │ LrcPtr::new(Fs_rs::UH2::UH2_0(LrcPtr::new(Fs_rs::UH0::UH0_1),                │
00:00:45 #731 [Verbose] > │                                                                              │
00:00:45 #732 [Verbose] > │ string("03"),                                                                │
00:00:45 #733 [Verbose] > │                                                                              │
00:00:45 #734 [Verbose] > │ Fs_rs::US4::US4_0(Fs_rs::US3::US3_0),                                        │
00:00:45 #735 [Verbose] > │                                                                              │
00:00:45 #736 [Verbose] > │ LrcPtr::new(Fs_rs::UH2::UH2_1))))))));                                       │
00:00:45 #737 [Verbose] > │             println!("{0}", &v17,);                                          │
00:00:45 #738 [Verbose] > │             ()                                                               │
00:00:45 #739 [Verbose] > │         }                                                                    │
00:00:45 #740 [Verbose] > │         on_startup!(Fs_rs::method0());                                       │
00:00:45 #741 [Verbose] > │     }                                                                        │
00:00:45 #742 [Verbose] > │ }                                                                            │
00:00:45 #743 [Verbose] > │ pub use module_e32d1f60::*;                                                  │
00:00:45 #744 [Verbose] > │                                                                              │
00:00:45 #745 [Verbose] > │                                                                              │
00:00:45 #746 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 #747 [Verbose] >
00:00:45 #748 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 #749 [Verbose] > // // test
00:00:45 #750 [Verbose] > // // rust=
00:00:45 #751 [Verbose] >
00:00:45 #752 [Verbose] > get_tasks ()
00:00:45 #753 [Verbose] > |> listm'.try_item 0i32
00:00:45 #754 [Verbose] > |> fun (Some task) => task.task.name
00:00:45 #755 [Verbose] > |> _equal (task_name "01")
00:00:45 #756 [Verbose] > Building /tmp/!dotnet-repl/20240226-2104-1747-4705-46f9f9456421/main.spi
00:00:47 #757 [Verbose] >
00:00:47 #758 [Verbose] > ╭─[ 2.57s - return value ]─────────────────────────────────────────────────────╮
00:00:47 #759 [Verbose] > │ .rs output:                                                                  │
00:00:47 #760 [Verbose] > │                                                                              │
00:00:47 #761 [Verbose] > │                                                                              │
00:00:47 #762 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:47 #763 [Verbose] >
00:00:47 #764 [Verbose] > ╭─[ 2.58s - stdout ]───────────────────────────────────────────────────────────╮
00:00:47 #765 [Verbose] > │                                                                              │
00:00:47 #766 [Verbose] > │ .fsx:                                                                        │
00:00:47 #767 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:47 #768 [Verbose] > │     let v0 : string = "01"                                                   │
00:00:47 #769 [Verbose] > │     let v1 : string = $"__expect / actual: %A{v0} / expected: %A{v0}"        │
00:00:47 #770 [Verbose] > │     ()                                                                       │
00:00:47 #771 [Verbose] > │ method0()                                                                    │
00:00:47 #772 [Verbose] > │                                                                              │
00:00:47 #773 [Verbose] > │ .rs:                                                                         │
00:00:47 #774 [Verbose] > │ #![allow(dead_code,)]                                                        │
00:00:47 #775 [Verbose] > │ #![allow(non_camel_case_types,)]                                             │
00:00:47 #776 [Verbose] > │ #![allow(non_snake_case,)]                                                   │
00:00:47 #777 [Verbose] > │ #![allow(non_upper_case_globals,)]                                           │
00:00:47 #778 [Verbose] > │ #![allow(unreachable_code,)]                                                 │
00:00:47 #779 [Verbose] > │ #![allow(unused_attributes,)]                                                │
00:00:47 #780 [Verbose] > │ #![allow(unused_imports,)]                                                   │
00:00:47 #781 [Verbose] > │ #![allow(unused_macros,)]                                                    │
00:00:47 #782 [Verbose] > │ #![allow(unused_parens,)]                                                    │
00:00:47 #783 [Verbose] > │ #![allow(unused_variables,)]                                                 │
00:00:47 #784 [Verbose] > │ mod module_e32d1f60 {                                                        │
00:00:47 #785 [Verbose] > │     pub mod Fs_rs {                                                          │
00:00:47 #786 [Verbose] > │         use super::*;                                                        │
00:00:47 #787 [Verbose] > │         use fable_library_rust::Native_::Any;                                │
00:00:47 #788 [Verbose] > │         use fable_library_rust::Native_::on_startup;                         │
00:00:47 #789 [Verbose] > │         use fable_library_rust::String_::sprintf;                            │
00:00:47 #790 [Verbose] > │         use fable_library_rust::String_::string;                             │
00:00:47 #791 [Verbose] > │         pub fn method0() {                                                   │
00:00:47 #792 [Verbose] > │             let v1: string =                                                 │
00:00:47 #793 [Verbose] > │                 sprintf!("__expect / actual: {:?} / expected: {:?}",         │
00:00:47 #794 [Verbose] > │                          &string("01"), &string("01"));                      │
00:00:47 #795 [Verbose] > │             ()                                                               │
00:00:47 #796 [Verbose] > │         }                                                                    │
00:00:47 #797 [Verbose] > │         on_startup!(Fs_rs::method0());                                       │
00:00:47 #798 [Verbose] > │     }                                                                        │
00:00:47 #799 [Verbose] > │ }                                                                            │
00:00:47 #800 [Verbose] > │ pub use module_e32d1f60::*;                                                  │
00:00:47 #801 [Verbose] > │                                                                              │
00:00:47 #802 [Verbose] > │                                                                              │
00:00:47 #803 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:47 #804 [Verbose] >
00:00:47 #805 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:47 #806 [Verbose] > // // test
00:00:47 #807 [Verbose] >
00:00:47 #808 [Verbose] > ()
00:00:47 #809 [Verbose] > Building /tmp/!dotnet-repl/20240226-2104-2004-0463-0028962526ff/main.spi
00:00:48 #810 [Verbose] >
00:00:48 #811 [Verbose] > ╭─[ 277.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:48 #812 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:48 #813 [Verbose] > │     ()                                                                       │
00:00:48 #814 [Verbose] > │ method0()                                                                    │
00:00:48 #815 [Verbose] > │                                                                              │
00:00:48 #816 [Verbose] > │                                                                              │
00:00:48 #817 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:48 #818 [Verbose] > [NbConvertApp] Converting notebook Tasks.dib.ipynb to html
00:00:48 #819 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:48 #820 [Verbose] >   validate(nb)
00:00:49 #821 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:49 #822 [Verbose] >   return _pygments_highlight(
00:00:49 #823 [Verbose] > [NbConvertApp] Writing 312844 bytes to Tasks.dib.html
00:00:49 #824 [Debug] executeAsync / exitCode: 0 / output.Length: 67915
00:00:49 #825 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: Tasks.dib
00:00:00 #2 [Debug] parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ . "$ScriptDir/../apps/spiral/temp/test/build.ps1" } | Invoke-Block
── pwsh ────────────────────────────────────────────────────────────────────────
. ../../../../scripts/nbs_header.ps1
. ../../../../scripts/core.ps1

── pwsh ────────────────────────────────────────────────────────────────────────
{ . ../../../../apps/spiral/dist/Supervisor$(GetExecutableSuffix) --build-file 
test.spi test.fsx --timeout 10000 } | Invoke-Block

╭─[ 2.77s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #2 [Debug] runWithTimeoutAsync / timeout: 60                        │
│ 00:00:00 #3 [Debug] executeAsync / options: { Command =                      │
│    "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The │
│ Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll"    │
│ --port 13805 --default-int i32 --default-float f64"                          │
│   WorkingDirectory = None                                                    │
│   CancellationToken = Some System.Threading.CancellationToken                │
│   OnLine = Some <fun:main@411-297> }                                         │
│ 00:00:00 #4 [Verbose] > pwd:                                                 │
│ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test                    │
│ 00:00:00 #5 [Verbose] > dll_path:                                            │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:00 #6 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #7 [Verbose] waitForPortAccess / port: 13805 / retry: 0             │
│ 00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or   │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to:         │
│ http://localhost:13805                                                       │
│ 00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or  │
│ more errors occurred. (Connection refused)                                   │
│ 00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} /          │
│ result.Length:                                                               │
│ 00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port:     │
│ 13805 / retry: 0                                                             │
│ 00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805             │
│ 00:00:00 #20 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:00 #21 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:00 #22 [Debug] sendJson / port: 13805 / json:                          │
│ {"FileOpen":{"spiText":"inl app () =\n    \u0022test\u0022 |\u003E           │
│ console.write_line\n    0i32\n\ninl main () =\n    print_static              │
│ \u0022\u003Ctest\u003E\u0022\n\n    app\n    |\u003E dyn\n    |\u003E        │
│ ignore\n\n    print_static                                                   │
│ \u0022\u003C/test\u003E\u0022\n","uri":"file:///home/runner/work/polyglot/po │
│ lyglot/apps/spiral/temp/test/test.spi"}} / result.Length:                    │
│ 00:00:00 #23 [Debug] sendJson / port: 13805 / json:                          │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
│ lyglot/apps/spiral/temp/test/test.spi"}} / result.Length:                    │
│ 00:00:01 #24 [Verbose] > Building                                            │
│ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.spi           │
│ 00:00:01 #25 [Debug] buildFile / takeWhileInclusive / fsxContent:  / errors: │
│ [] / typeErrorCount: 0                                                       │
│ 00:00:02 #26 [Verbose] > <test>                                              │
│ 00:00:02 #27 [Verbose] > </test>                                             │
│ 00:00:02 #28 [Debug] buildFile / takeWhileInclusive / fsxContent: let rec    │
│ closure0 () () : int32 =                                                     │
│     let v0 : string = "test"                                                 │
│     System.Console.WriteLine v0                                              │
│     0                                                                        │
│ let v0 : (unit -> int32) = closure0()                                        │
│ ()                                                                           │
│  / errors: [] / typeErrorCount: 0                                            │
│ 00:00:02 #29 [Debug] watchWithFilter / Disposing watch stream / filter:      │
│ FileName, LastWrite                                                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── pwsh ────────────────────────────────────────────────────────────────────────
dotnet fable --optimize --lang rs --extension .rs

╭─[ 7.04s - stdout ]───────────────────────────────────────────────────────────╮
│ Fable 4.13.0: F# to Rust compiler (status: alpha)                         │
│                                                                           │
│ Thanks to the contributor! @zaaack                                           │
│ Stand with Ukraine! https://standwithukraine.com.ua/                      │
│                                                                              │
│ Parsing test.fsproj...                                                    │
│ .> dotnet restore test.fable-temp.csproj -p:FABLE_COMPILER=true           │
│ -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true                         │
│   Determining projects to restore...                                         │
│   Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483      │
│   The last full restore is still up to date. Nothing left to do.             │
│   Total time taken: 0 milliseconds                                           │
│   Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483      │
│   Restoring                                                                  │
│ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fable-temp.cs │
│ proj                                                                         │
│   Starting restore process.                                                  │
│   Total time taken: 0 milliseconds                                           │
│   Restored                                                                   │
│ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fable-temp.cs │
│ proj (in 246 ms).                                                            │
│ .> dotnet restore                                                         │
│ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fsproj        │
│   Determining projects to restore...                                         │
│   Restored                                                                   │
│ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fsproj (in    │
│ 243 ms).                                                                     │
│ Project and references (1 source files) parsed in 5038ms                  │
│                                                                              │
│ Started Fable compilation...                                              │
│ Fable compilation finished in 991ms                                       │
│                                                                              │
│ ./test.fsx(6,0): (6,2) warning FABLE: For Rust, support for F# static and │
│ module do bindings is disabled by default. It can be enabled with the        │
│ 'static_do_bindings' feature. Use at your own risk!                          │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── pwsh ────────────────────────────────────────────────────────────────────────
(Get-Content test.rs) `
    -replace [[regex]]::Escape("),);"), "));" `
| Set-Content test.rs

── pwsh ────────────────────────────────────────────────────────────────────────
cargo fmt --

── pwsh ────────────────────────────────────────────────────────────────────────
cargo build --release

╭─[ 19.81s - stdout ]──────────────────────────────────────────────────────────╮
│     Updating crates.io index                                          │
│  Downloading crates ...                                               │
│   Downloaded unarray v0.1.4                                           │
│   Downloaded wait-timeout v0.2.0                                      │
│   Downloaded rand_xorshift v0.3.0                                     │
│   Downloaded bit-set v0.5.3                                           │
│   Downloaded proptest v1.4.0                                          │
│   Downloaded syn v2.0.50                                              │
│   Downloaded rusty-fork v0.3.0                                        │
│   Downloaded bit-vec v0.6.3                                           │
│   Downloaded libm v0.2.8                                              │
│    Compiling libc v0.2.153                                            │
│    Compiling cfg-if v1.0.0                                            │
│    Compiling autocfg v1.1.0                                           │
│    Compiling libm v0.2.8                                              │
│    Compiling proc-macro2 v1.0.78                                      │
│    Compiling num-traits v0.2.18                                       │
│    Compiling unicode-ident v1.0.12                                    │
│    Compiling quote v1.0.35                                            │
│    Compiling getrandom v0.2.12                                        │
│    Compiling memchr v2.7.1                                            │
│    Compiling rustix v0.38.31                                          │
│    Compiling once_cell v1.19.0                                        │
│    Compiling rand_core v0.6.4                                         │
│    Compiling syn v2.0.50                                              │
│    Compiling bitflags v2.4.2                                          │
│    Compiling regex-syntax v0.8.2                                      │
│    Compiling linux-raw-sys v0.4.13                                    │
│    Compiling aho-corasick v1.1.2                                      │
│    Compiling tracing-core v0.1.32                                     │
│    Compiling num-bigint v0.4.4                                        │
│    Compiling ppv-lite86 v0.2.17                                       │
│    Compiling lazy_static v1.4.0                                       │
│    Compiling fastrand v2.0.1                                          │
│    Compiling rust_decimal v1.34.3                                     │
│    Compiling rand_chacha v0.3.1                                       │
│    Compiling tempfile v3.10.0                                         │
│    Compiling regex-automata v0.4.5                                    │
│    Compiling num-integer v0.1.46                                      │
│    Compiling wait-timeout v0.2.0                                      │
│    Compiling thiserror v1.0.57                                        │
│    Compiling log v0.4.20                                              │
│    Compiling fnv v1.0.7                                               │
│    Compiling bit-vec v0.6.3                                           │
│    Compiling quick-error v1.2.3                                       │
│    Compiling arrayvec v0.7.4                                          │
│    Compiling iana-time-zone v0.1.60                                   │
│    Compiling overload v0.1.1                                          │
│    Compiling nu-ansi-term v0.46.0                                     │
│    Compiling tracing-attributes v0.1.27                               │
│    Compiling thiserror-impl v1.0.57                                   │
│    Compiling regex v1.10.3                                            │
│    Compiling chrono v0.4.34                                           │
│    Compiling bit-set v0.5.3                                           │
│    Compiling rusty-fork v0.3.0                                        │
│    Compiling tracing-log v0.2.0                                       │
│    Compiling rand v0.8.5                                              │
│    Compiling sharded-slab v0.1.7                                      │
│    Compiling rand_xorshift v0.3.0                                     │
│    Compiling thread_local v1.1.8                                      │
│    Compiling uuid v1.7.0                                              │
│    Compiling minimal-lexical v0.2.1                                   │
│    Compiling unarray v0.1.4                                           │
│    Compiling smallvec v1.13.1                                         │
│    Compiling pin-project-lite v0.2.13                                 │
│    Compiling tracing-subscriber v0.3.18                               │
│    Compiling nom v7.1.3                                               │
│    Compiling tracing v0.1.40                                          │
│    Compiling fable_library_rust v0.1.0                                  │
│ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/fable_modules/fab │
│ le-library-rust)                                                           │
│    Compiling proptest v1.4.0                                          │
│    Compiling spiral_temp_test v0.0.1                                    │
│ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test)                │
│ warning: the item `any` is imported redundantly                       │
│   --> apps/spiral/temp/test/./main.rs:11:27                           │
│    |                                                                  │
│ 11 | use proptest::arbitrary::{any, Arbitrary};                       │
│    |                           ^^^                                    │
│ 12 | use proptest::prelude::*;                                        │
│    |     -------------------- the item `any` is already imported here │
│    |                                                                  │
│    = note: `#[warn(unused_imports)]` on by default                    │
│                                                                       │
│ warning: the item `Arbitrary` is imported redundantly                 │
│   --> apps/spiral/temp/test/./main.rs:11:32                           │
│    |                                                                  │
│ 11 | use proptest::arbitrary::{any, Arbitrary};                       │
│    |                                ^^^^^^^^^                         │
│ 12 | use proptest::prelude::*;                                        │
│    |     -------------------- the item `Arbitrary` is already imported  │
│ here                                                                       │
│                                                                       │
│ warning: unused import: `info`                                        │
│    --> apps/spiral/temp/test/./main.rs:190:15                         │
│     |                                                                 │
│ 190 | use tracing::{info, Level};                                     │
│     |               ^^^^                                              │
│                                                                       │
│ warning: associated items `new`, `add_item`, and `remove_item` are      │
│ never used                                                                 │
│   --> apps/spiral/temp/test/./main.rs:46:8                            │
│    |                                                                  │
│ 45 | impl Cart {                                                      │
│    | --------- associated items in this implementation                │
│ 46 |     fn new() -> Cart {                                           │
│    |        ^^^                                                       │
│ ...                                                                   │
│ 50 |     fn add_item(&mut self, item: Item) {                         │
│    |        ^^^^^^^^                                                  │
│ ...                                                                   │
│ 56 |     fn remove_item(&mut self, item: &Item) {                     │
│    |        ^^^^^^^^^^^                                               │
│    |                                                                  │
│    = note: `#[warn(dead_code)]` on by default                         │
│                                                                       │
│ warning: function `parse_comment` is never used                       │
│    --> apps/spiral/temp/test/./main.rs:124:4                          │
│     |                                                                 │
│ 124 | fn parse_comment(input: &str) -> IResult<&str, SpiralToken> {   │
│     |    ^^^^^^^^^^^^^                                                │
│                                                                       │
│ warning: function `parse_string` is never used                        │
│    --> apps/spiral/temp/test/./main.rs:130:4                          │
│     |                                                                 │
│ 130 | fn parse_string(input: &str) -> IResult<&str, SpiralToken> {    │
│     |    ^^^^^^^^^^^^                                                 │
│                                                                       │
│ warning: function `parse_identifier` is never used                    │
│    --> apps/spiral/temp/test/./main.rs:145:4                          │
│     |                                                                 │
│ 145 | fn parse_identifier(input: &str) -> IResult<&str, SpiralToken> {38;5;2m│
│ 0m                                                                           │
│     |    ^^^^^^^^^^^^^^^^                                             │
│                                                                       │
│ warning: function `parse_integer` is never used                       │
│    --> apps/spiral/temp/test/./main.rs:157:4                          │
│     |                                                                 │
│ 157 | fn parse_integer(input: &str) -> IResult<&str, SpiralToken> {   │
│     |    ^^^^^^^^^^^^^                                                │
│                                                                       │
│ warning: function `parse_operator` is never used                      │
│    --> apps/spiral/temp/test/./main.rs:165:4                          │
│     |                                                                 │
│ 165 | fn parse_operator(input: &str) -> IResult<&str, SpiralToken> {  │
│     |    ^^^^^^^^^^^^^^                                               │
│                                                                       │
│ warning: function `parse_token` is never used                         │
│    --> apps/spiral/temp/test/./main.rs:170:4                          │
│     |                                                                 │
│ 170 | fn parse_token(input: &str) -> IResult<&str, SpiralToken> {     │
│     |    ^^^^^^^^^^^                                                  │
│                                                                       │
│ warning: function `format_token` is never used                        │
│    --> apps/spiral/temp/test/./main.rs:180:4                          │
│     |                                                                 │
│ 180 | fn format_token(token: &SpiralToken) -> String {                │
│     |    ^^^^^^^^^^^^                                                 │
│                                                                       │
│ warning: function `parse_expression` is never used                    │
│    --> apps/spiral/temp/test/./main.rs:213:4                          │
│     |                                                                 │
│ 213 | fn parse_expression(input: &str) -> IResult<&str, SpiralToken> {38;5;2m│
│ 0m                                                                           │
│     |    ^^^^^^^^^^^^^^^^                                             │
│                                                                       │
│ warning: `spiral_temp_test` (bin "spiral_temp_test") generated 12       │
│ warnings (run `cargo fix --bin "spiral_temp_test"` to apply 1 suggestion)  │
│     Finished `release` profile [optimized] target(s) in 19.73s        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── pwsh ────────────────────────────────────────────────────────────────────────
$env:RUST_LOG="info"
{ cargo test --release } | Invoke-Block

╭─[ 22.06s - stdout ]──────────────────────────────────────────────────────────╮
│    Compiling cfg-if v1.0.0                                            │
│    Compiling libc v0.2.153                                            │
│    Compiling libm v0.2.8                                              │
│    Compiling once_cell v1.19.0                                        │
│    Compiling memchr v2.7.1                                            │
│    Compiling linux-raw-sys v0.4.13                                    │
│    Compiling getrandom v0.2.12                                        │
│    Compiling num-traits v0.2.18                                       │
│    Compiling rand_core v0.6.4                                         │
│    Compiling regex-syntax v0.8.2                                      │
│    Compiling bitflags v2.4.2                                          │
│    Compiling rustix v0.38.31                                          │
│    Compiling aho-corasick v1.1.2                                      │
│    Compiling tracing-core v0.1.32                                     │
│    Compiling lazy_static v1.4.0                                       │
│    Compiling fastrand v2.0.1                                          │
│    Compiling ppv-lite86 v0.2.17                                       │
│    Compiling rand_chacha v0.3.1                                       │
│    Compiling tempfile v3.10.0                                         │
│    Compiling regex-automata v0.4.5                                    │
│    Compiling num-integer v0.1.46                                      │
│    Compiling wait-timeout v0.2.0                                      │
│    Compiling arrayvec v0.7.4                                          │
│    Compiling overload v0.1.1                                          │
│    Compiling fnv v1.0.7                                               │
│    Compiling iana-time-zone v0.1.60                                   │
│    Compiling quick-error v1.2.3                                       │
│    Compiling bit-vec v0.6.3                                           │
│    Compiling log v0.4.20                                              │
│    Compiling tracing-log v0.2.0                                       │
│    Compiling bit-set v0.5.3                                           │
│    Compiling chrono v0.4.34                                           │
│    Compiling rusty-fork v0.3.0                                        │
│    Compiling rust_decimal v1.34.3                                     │
│    Compiling nu-ansi-term v0.46.0                                     │
│    Compiling regex v1.10.3                                            │
│    Compiling num-bigint v0.4.4                                        │
│    Compiling rand v0.8.5                                              │
│    Compiling sharded-slab v0.1.7                                      │
│    Compiling rand_xorshift v0.3.0                                     │
│    Compiling uuid v1.7.0                                              │
│    Compiling thread_local v1.1.8                                      │
│    Compiling smallvec v1.13.1                                         │
│    Compiling unarray v0.1.4                                           │
│    Compiling minimal-lexical v0.2.1                                   │
│    Compiling pin-project-lite v0.2.13                                 │
│    Compiling tracing v0.1.40                                          │
│    Compiling proptest v1.4.0                                          │
│    Compiling nom v7.1.3                                               │
│    Compiling tracing-subscriber v0.3.18                               │
│    Compiling thiserror v1.0.57                                        │
│    Compiling fable_library_rust v0.1.0                                  │
│ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/fable_modules/fab │
│ le-library-rust)                                                           │
│    Compiling spiral_temp_test v0.0.1                                    │
│ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test)                │
│ warning: the item `any` is imported redundantly                       │
│   --> apps/spiral/temp/test/./main.rs:11:27                           │
│    |                                                                  │
│ 11 | use proptest::arbitrary::{any, Arbitrary};                       │
│    |                           ^^^                                    │
│ 12 | use proptest::prelude::*;                                        │
│    |     -------------------- the item `any` is already imported here │
│    |                                                                  │
│    = note: `#[warn(unused_imports)]` on by default                    │
│                                                                       │
│ warning: the item `Arbitrary` is imported redundantly                 │
│   --> apps/spiral/temp/test/./main.rs:11:32                           │
│    |                                                                  │
│ 11 | use proptest::arbitrary::{any, Arbitrary};                       │
│    |                                ^^^^^^^^^                         │
│ 12 | use proptest::prelude::*;                                        │
│    |     -------------------- the item `Arbitrary` is already imported  │
│ here                                                                       │
│                                                                       │
│ warning: `spiral_temp_test` (bin "spiral_temp_test" test) generated 2   │
│ warnings                                                                   │
│     Finished `release` profile [optimized] target(s) in 21.91s        │
│      Running unittests main.rs                                          │
│ (/home/runner/work/polyglot/polyglot/target/release/deps/spiral_temp_test-cc │
│ f7dd479afa968f)                                                            │
│                                                                              │
│ running 3 tests                                                              │
│ 2024-02-26T21:05:17.540339Z  INFO spiral_temp_test:         │
│ input=Identifier("VF7ZVgpmECanLqNyB")                                        │
│ test test_parse_number ... ok                                                │
│ 2024-02-26T21:05:17.540407Z  INFO spiral_temp_test:         │
│ input=Operator(")")                                                          │
│ 2024-02-26T21:05:17.540435Z  INFO spiral_temp_test:         │
│ input=Integer(-6865565296200761962)                                          │
│ 2024-02-26T21:05:17.540473Z  INFO spiral_temp_test:         │
│ input=Identifier("XeHfQ8vNxPWTyRkqsBTw3IP0XU1LRG")                           │
│ 2024-02-26T21:05:17.540509Z  INFO spiral_temp_test:         │
│ input=Comment("Y)v2ehd$&3")                                                  │
│ 2024-02-26T21:05:17.540543Z  INFO spiral_temp_test:         │
│ input=StringLiteral("$oON.Zx{dK%f|)K")                                       │
│ 2024-02-26T21:05:17.540571Z  INFO spiral_temp_test:         │
│ input=Integer(-8871083308612991424)                                          │
│ 2024-02-26T21:05:17.540606Z  INFO spiral_temp_test:         │
│ input=StringLiteral("gn;V'7r'Au$9.%|hhk7")                                   │
│ 2024-02-26T21:05:17.540634Z  INFO spiral_temp_test:         │
│ input=Integer(-3517333082613778363)                                          │
│ 2024-02-26T21:05:17.540663Z  INFO spiral_temp_test:         │
│ input=Identifier("qwvQCVTa4")                                                │
│ 2024-02-26T21:05:17.540701Z  INFO spiral_temp_test:         │
│ input=StringLiteral("k")                                                     │
│ 2024-02-26T21:05:17.540735Z  INFO spiral_temp_test:         │
│ input=StringLiteral("Z _ax*jl-u_`BG$6`W'D")                                  │
│ 2024-02-26T21:05:17.540765Z  INFO spiral_temp_test:         │
│ input=Operator("/")                                                          │
│ 2024-02-26T21:05:17.540790Z  INFO spiral_temp_test:         │
│ input=Integer(6946319083004651709)                                           │
│ 2024-02-26T21:05:17.540818Z  INFO spiral_temp_test:         │
│ input=Comment("/'Y=")                                                        │
│ 2024-02-26T21:05:17.540843Z  INFO spiral_temp_test:         │
│ input=Integer(6190088509762661687)                                           │
│ 2024-02-26T21:05:17.540872Z  INFO spiral_temp_test:         │
│ input=StringLiteral("k+Qdh+L")                                               │
│ 2024-02-26T21:05:17.540900Z  INFO spiral_temp_test:         │
│ input=Operator("/")                                                          │
│ 2024-02-26T21:05:17.540935Z  INFO spiral_temp_test:         │
│ input=Identifier("caF7i10WT1i8yZH0dW")                                       │
│ 2024-02-26T21:05:17.540959Z  INFO spiral_temp_test:         │
│ input=Integer(2636390147781027591)                                           │
│ 2024-02-26T21:05:17.540983Z  INFO spiral_temp_test:         │
│ input=Operator(")")                                                          │
│ 2024-02-26T21:05:17.541005Z  INFO spiral_temp_test:         │
│ input=Integer(-5341831276143525856)                                          │
│ 2024-02-26T21:05:17.541033Z  INFO spiral_temp_test:         │
│ input=Identifier("h1CYmC714W9XOz")                                           │
│ 2024-02-26T21:05:17.541055Z  INFO spiral_temp_test:         │
│ input=Integer(2868346154743727495)                                           │
│ 2024-02-26T21:05:17.541087Z  INFO spiral_temp_test:         │
│ input=Identifier("U8Wqvi5HeVrqLcBFbB8QTPqnIkYq9Yq")                          │
│ 2024-02-26T21:05:17.541122Z  INFO spiral_temp_test:         │
│ input=Comment("S\"*WoX&'0g,:a{@#)`*e8{,{g)8")                                │
│ 2024-02-26T21:05:17.541156Z  INFO spiral_temp_test:         │
│ input=Comment("5$.G&O<US=`A&G{msg<\\]O")                                     │
│ 2024-02-26T21:05:17.541180Z  INFO spiral_temp_test:         │
│ input=Integer(-8190217771717759106)                                          │
│ 2024-02-26T21:05:17.541202Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.541229Z  INFO spiral_temp_test:         │
│ input=StringLiteral("%{/U$j/gn_v")                                           │
│ 2024-02-26T21:05:17.541254Z  INFO spiral_temp_test:         │
│ input=StringLiteral(".")                                                     │
│ 2024-02-26T21:05:17.541281Z  INFO spiral_temp_test:         │
│ input=Comment("(Zt/u[:%=9")                                                  │
│ 2024-02-26T21:05:17.541303Z  INFO spiral_temp_test:         │
│ input=Integer(-830728345428498059)                                           │
│ 2024-02-26T21:05:17.541325Z  INFO spiral_temp_test:         │
│ input=Identifier("y")                                                        │
│ 2024-02-26T21:05:17.541347Z  INFO spiral_temp_test:         │
│ input=Operator("/")                                                          │
│ 2024-02-26T21:05:17.541381Z  INFO spiral_temp_test:         │
│ input=Identifier("nJS1xqG1kzxXR6h6obnmjW9983VmRx")                           │
│ 2024-02-26T21:05:17.541410Z  INFO spiral_temp_test:         │
│ input=Identifier("c151iG7603wE")                                             │
│ 2024-02-26T21:05:17.541434Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.541467Z  INFO spiral_temp_test:         │
│ input=StringLiteral("j3{%2/?'R!8r%*B%GMsPI@i(m?<q")                          │
│ 2024-02-26T21:05:17.541502Z  INFO spiral_temp_test:         │
│ input=Identifier("GgU8vlUsvrMD63XeKEAW0v0IrE")                               │
│ 2024-02-26T21:05:17.541526Z  INFO spiral_temp_test:         │
│ input=Integer(6570902332665589095)                                           │
│ 2024-02-26T21:05:17.541554Z  INFO spiral_temp_test:         │
│ input=Identifier("xNQhunSIVN7bxe8")                                          │
│ 2024-02-26T21:05:17.541615Z  INFO spiral_temp_test:         │
│ input=Operator("*")                                                          │
│ 2024-02-26T21:05:17.541641Z  INFO spiral_temp_test:         │
│ input=Integer(-384814238863924491)                                           │
│ 2024-02-26T21:05:17.541668Z  INFO spiral_temp_test:         │
│ input=Comment("&I$1*8p\"")                                                   │
│ 2024-02-26T21:05:17.541694Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.541722Z  INFO spiral_temp_test:         │
│ input=Comment("T\"{No5xp9%z(")                                               │
│ 2024-02-26T21:05:17.541748Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.541769Z  INFO spiral_temp_test:         │
│ input=Integer(2462156001692086586)                                           │
│ 2024-02-26T21:05:17.541804Z  INFO spiral_temp_test:         │
│ input=StringLiteral("5;3J,*/{Y,|(pZq4Ah'&/p$%iy}#")                          │
│ 2024-02-26T21:05:17.541837Z  INFO spiral_temp_test:         │
│ input=Identifier("B7hlzZqm1RtU40LBJ90HA")                                    │
│ 2024-02-26T21:05:17.541869Z  INFO spiral_temp_test:         │
│ input=StringLiteral("Q_;,I$|zX=@-+zB{e$")                                    │
│ 2024-02-26T21:05:17.541898Z  INFO spiral_temp_test:         │
│ input=StringLiteral("Hl$ft`*%v&K")                                           │
│ 2024-02-26T21:05:17.541926Z  INFO spiral_temp_test:         │
│ input=Identifier("c282jq7Ef58")                                              │
│ 2024-02-26T21:05:17.541958Z  INFO spiral_temp_test:         │
│ input=Comment("M%\"&az){N6A&\\6n~)Y \\GW'za{")                               │
│ 2024-02-26T21:05:17.541984Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.542004Z  INFO spiral_temp_test:         │
│ input=Integer(7292901792890168422)                                           │
│ 2024-02-26T21:05:17.542030Z  INFO spiral_temp_test:         │
│ input=Identifier("NJnf4NK1N")                                                │
│ 2024-02-26T21:05:17.542060Z  INFO spiral_temp_test:         │
│ input=StringLiteral("1y<.{U{`*]2$w,*[=^.)")                                  │
│ 2024-02-26T21:05:17.542089Z  INFO spiral_temp_test:         │
│ input=Comment("k%&&'(_8(")                                                   │
│ 2024-02-26T21:05:17.542121Z  INFO spiral_temp_test:         │
│ input=Comment("}j>;m`|?g`:=5+^UV[F\"\\eO/).%/]")                             │
│ 2024-02-26T21:05:17.542145Z  INFO spiral_temp_test:         │
│ input=Integer(8213979366506348558)                                           │
│ 2024-02-26T21:05:17.542176Z  INFO spiral_temp_test:         │
│ input=StringLiteral("BR,//}{{7?,`El.L*`@@{V<l")                              │
│ 2024-02-26T21:05:17.542203Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.542224Z  INFO spiral_temp_test:         │
│ input=Integer(4766977549590563911)                                           │
│ 2024-02-26T21:05:17.542246Z  INFO spiral_temp_test:         │
│ input=Comment("&=")                                                          │
│ 2024-02-26T21:05:17.542274Z  INFO spiral_temp_test:         │
│ input=StringLiteral("X'%X]/EO-JLRB")                                         │
│ 2024-02-26T21:05:17.542299Z  INFO spiral_temp_test:         │
│ input=Identifier("F799s")                                                    │
│ 2024-02-26T21:05:17.542320Z  INFO spiral_temp_test:         │
│ input=Integer(-7578305861382170654)                                          │
│ 2024-02-26T21:05:17.542350Z  INFO spiral_temp_test:         │
│ input=Comment("5(:Z\"?IN6.t$y<<'\"N+V%$.")                                   │
│ 2024-02-26T21:05:17.542382Z  INFO spiral_temp_test:         │
│ input=Identifier("o8Vl29KUeqkO2QXTw5gNxqIFa2")                               │
│ 2024-02-26T21:05:17.542407Z  INFO spiral_temp_test:         │
│ input=Operator("*")                                                          │
│ 2024-02-26T21:05:17.542434Z  INFO spiral_temp_test:         │
│ input=Comment("*`).Yk|\\@")                                                  │
│ 2024-02-26T21:05:17.542458Z  INFO spiral_temp_test:         │
│ input=Identifier("JMBb")                                                     │
│ 2024-02-26T21:05:17.542489Z  INFO spiral_temp_test:         │
│ input=Identifier("qfpW1o0Z1hBNOXIM9Yv29d16AKO2UP")                           │
│ 2024-02-26T21:05:17.542519Z  INFO spiral_temp_test:         │
│ input=Comment("<u`N=^/|{$; F$' 6 ")                                          │
│ 2024-02-26T21:05:17.542550Z  INFO spiral_temp_test:         │
│ input=StringLiteral("&/;>,/ODO7/4k /bV-kuA`")                                │
│ 2024-02-26T21:05:17.542575Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.542601Z  INFO spiral_temp_test:         │
│ input=Identifier("OCyuGCrx44L")                                              │
│ 2024-02-26T21:05:17.542625Z  INFO spiral_temp_test:         │
│ input=Operator("*")                                                          │
│ 2024-02-26T21:05:17.542648Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.542688Z  INFO spiral_temp_test:         │
│ input=Comment("X;o8e%*N@{;r7_^BqQA*/+*(RB]'}V&)")                            │
│ 2024-02-26T21:05:17.542718Z  INFO spiral_temp_test:         │
│ input=StringLiteral("a8FzYm9S!S1+'")                                         │
│ 2024-02-26T21:05:17.542746Z  INFO spiral_temp_test:         │
│ input=Identifier("C3J717l7UNb49")                                            │
│ 2024-02-26T21:05:17.542773Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.542797Z  INFO spiral_temp_test:         │
│ input=Comment("_")                                                           │
│ 2024-02-26T21:05:17.542820Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.542847Z  INFO spiral_temp_test:         │
│ input=Comment(":&:{[6`=s:")                                                  │
│ 2024-02-26T21:05:17.542872Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.542897Z  INFO spiral_temp_test:         │
│ input=StringLiteral("F$G:_o|")                                               │
│ 2024-02-26T21:05:17.542920Z  INFO spiral_temp_test:         │
│ input=Integer(5252346928459485547)                                           │
│ 2024-02-26T21:05:17.542944Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.542976Z  INFO spiral_temp_test:         │
│ input=StringLiteral("N<{y<4m@6N`amy'qe>AOw&;T`G<")                           │
│ 2024-02-26T21:05:17.543002Z  INFO spiral_temp_test:         │
│ input=Integer(-5017663687923359021)                                          │
│ 2024-02-26T21:05:17.543024Z  INFO spiral_temp_test:         │
│ input=Operator("+")                                                          │
│ 2024-02-26T21:05:17.543047Z  INFO spiral_temp_test:         │
│ input=StringLiteral("(Yj")                                                   │
│ 2024-02-26T21:05:17.543074Z  INFO spiral_temp_test:         │
│ input=StringLiteral("l$^-&Hg|c.*/!")                                         │
│ 2024-02-26T21:05:17.543099Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.543121Z  INFO spiral_temp_test:         │
│ input=Integer(-6319392106968614399)                                          │
│ 2024-02-26T21:05:17.543153Z  INFO spiral_temp_test:         │
│ input=Identifier("aGr5ZzsnHynBA6RxN33Sj6hin31143A")                          │
│ 2024-02-26T21:05:17.543186Z  INFO spiral_temp_test:         │
│ input=Identifier("Jmk18928FWua288HUS0sbU3m0lEjeH")                           │
│ 2024-02-26T21:05:17.543210Z  INFO spiral_temp_test:         │
│ input=Integer(-252180773779168187)                                           │
│ 2024-02-26T21:05:17.543238Z  INFO spiral_temp_test:         │
│ input=Comment("`)%?x)]&&lxZC.")                                              │
│ 2024-02-26T21:05:17.543267Z  INFO spiral_temp_test:         │
│ input=Identifier("w7MCK1ZXZMbpLEtRVh")                                       │
│ 2024-02-26T21:05:17.543297Z  INFO spiral_temp_test:         │
│ input=StringLiteral(";G:/#Hf?8g}{w6E<d")                                     │
│ 2024-02-26T21:05:17.543327Z  INFO spiral_temp_test:         │
│ input=Comment("q*@<:YL~2*#:U^S*")                                            │
│ 2024-02-26T21:05:17.543361Z  INFO spiral_temp_test:         │
│ input=Comment("+Y1xn,g\"=\"d`E1F$19/?BC$.}!<.~")                             │
│ 2024-02-26T21:05:17.543392Z  INFO spiral_temp_test:         │
│ input=Identifier("Hsi3u9qurQJOt47o65T")                                      │
│ 2024-02-26T21:05:17.543441Z  INFO spiral_temp_test:         │
│ input=Operator(")")                                                          │
│ 2024-02-26T21:05:17.543471Z  INFO spiral_temp_test:         │
│ input=Comment("\"u_#d|?{!H$H.'{")                                            │
│ 2024-02-26T21:05:17.543494Z  INFO spiral_temp_test:         │
│ input=Integer(-576304753438981218)                                           │
│ 2024-02-26T21:05:17.543515Z  INFO spiral_temp_test:         │
│ input=Integer(-6151233793075883100)                                          │
│ 2024-02-26T21:05:17.543549Z  INFO spiral_temp_test:         │
│ input=StringLiteral(".46@m'cPe3Q.*$n< ;xSEM%r?%MF<")                         │
│ 2024-02-26T21:05:17.543580Z  INFO spiral_temp_test:         │
│ input=Identifier("dS77Jh3nlOscL1zmTf2Rd8")                                   │
│ 2024-02-26T21:05:17.543612Z  INFO spiral_temp_test:         │
│ input=StringLiteral("m7uh'Nh2{W)n](/55.$#`{'`6i")                            │
│ 2024-02-26T21:05:17.543643Z  INFO spiral_temp_test:         │
│ input=Comment("$;\\o%\"'/`G_@y`3hka")                                        │
│ 2024-02-26T21:05:17.543672Z  INFO spiral_temp_test:         │
│ input=StringLiteral("{u/o&MP>=z@Zus")                                        │
│ 2024-02-26T21:05:17.543697Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.543719Z  INFO spiral_temp_test:         │
│ input=Comment("I")                                                           │
│ 2024-02-26T21:05:17.543751Z  INFO spiral_temp_test:         │
│ input=Comment("\"HPD+$@Ci'`.(B\\pw\\DV:'hd9y!")                              │
│ 2024-02-26T21:05:17.543778Z  INFO spiral_temp_test:         │
│ input=Identifier("h2Agrk42F")                                                │
│ 2024-02-26T21:05:17.543805Z  INFO spiral_temp_test:         │
│ input=StringLiteral("EXh:Kt.kfZ*d=")                                         │
│ 2024-02-26T21:05:17.543828Z  INFO spiral_temp_test:         │
│ input=Integer(139609537726743816)                                            │
│ 2024-02-26T21:05:17.543859Z  INFO spiral_temp_test:         │
│ input=StringLiteral("?{UZ{@R%d=- .t&@sy.Z$fV")                               │
│ 2024-02-26T21:05:17.543885Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.543906Z  INFO spiral_temp_test:         │
│ input=Integer(3983180416246181605)                                           │
│ 2024-02-26T21:05:17.543935Z  INFO spiral_temp_test:         │
│ input=StringLiteral("'[P:R_(wQ8kWKb(I&0%'Uh*")                               │
│ 2024-02-26T21:05:17.543961Z  INFO spiral_temp_test:         │
│ input=StringLiteral("<|%/")                                                  │
│ 2024-02-26T21:05:17.543993Z  INFO spiral_temp_test:         │
│ input=Comment("X=5nJ|tAV2UQ't&(\"%%/h[0%4a")                                 │
│ 2024-02-26T21:05:17.544026Z  INFO spiral_temp_test:         │
│ input=StringLiteral("c?{~|St:z<K2[I&J6Go$T2^'<")                             │
│ 2024-02-26T21:05:17.544054Z  INFO spiral_temp_test:         │
│ input=Comment("+`<Qo")                                                       │
│ 2024-02-26T21:05:17.544085Z  INFO spiral_temp_test:         │
│ input=Comment("h{L@GQ$z)IuixO$-Yu$d.Z\\':")                                  │
│ 2024-02-26T21:05:17.544117Z  INFO spiral_temp_test:         │
│ input=Identifier("xhZz302P4u7JyWJCvPZ7vJ4h")                                 │
│ 2024-02-26T21:05:17.544150Z  INFO spiral_temp_test:         │
│ input=Comment("d$uF]\"\\vN:C2[{[yy-BM-*>{? &=``")                            │
│ 2024-02-26T21:05:17.544179Z  INFO spiral_temp_test:         │
│ input=Comment("x:b*.ztv\\\\.")                                               │
│ 2024-02-26T21:05:17.544212Z  INFO spiral_temp_test:         │
│ input=Identifier("eqPcv0zO4GqBiSRccoup2FQ50r4j1")                            │
│ 2024-02-26T21:05:17.544241Z  INFO spiral_temp_test:         │
│ input=Integer(-2707911611270611557)                                          │
│ 2024-02-26T21:05:17.544269Z  INFO spiral_temp_test:         │
│ input=Comment("g")                                                           │
│ 2024-02-26T21:05:17.544300Z  INFO spiral_temp_test:         │
│ input=Comment("ki0QQ=ySC&U")                                                 │
│ 2024-02-26T21:05:17.544337Z  INFO spiral_temp_test:         │
│ input=StringLiteral("'Vt%i'`JM87v|'=p}]RL3p~GXO/")                           │
│ 2024-02-26T21:05:17.544369Z  INFO spiral_temp_test:         │
│ input=Identifier("mX29")                                                     │
│ 2024-02-26T21:05:17.544400Z  INFO spiral_temp_test:         │
│ input=StringLiteral("<9yb%$/e%~")                                            │
│ 2024-02-26T21:05:17.544439Z  INFO spiral_temp_test:         │
│ input=Identifier("iLwY1N5vTfFERJR2k5chC84C0AxS4fYb")                         │
│ 2024-02-26T21:05:17.544467Z  INFO spiral_temp_test:         │
│ input=Integer(-3102625049548180203)                                          │
│ 2024-02-26T21:05:17.544495Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.544524Z  INFO spiral_temp_test:         │
│ input=Comment("[**%|:")                                                      │
│ 2024-02-26T21:05:17.544549Z  INFO spiral_temp_test:         │
│ input=Integer(9135534861537341509)                                           │
│ 2024-02-26T21:05:17.544583Z  INFO spiral_temp_test:         │
│ input=Comment("=K+b?L/f\"?fR'4,kKQ&?T0x")                                    │
│ 2024-02-26T21:05:17.544620Z  INFO spiral_temp_test:         │
│ input=Comment("sK*?bP]cnPg7Y*<\"'\\?M{9\"\\]\"FF3")                          │
│ 2024-02-26T21:05:17.544654Z  INFO spiral_temp_test:         │
│ input=Comment(",g'1\"a7=zJdKF$+@")                                           │
│ 2024-02-26T21:05:17.544681Z  INFO spiral_temp_test:         │
│ input=Integer(-4631410495229137203)                                          │
│ 2024-02-26T21:05:17.544715Z  INFO spiral_temp_test:         │
│ input=StringLiteral("O2!;0{m:/%.nZ{.p$|5oP")                                 │
│ 2024-02-26T21:05:17.544756Z  INFO spiral_temp_test:         │
│ input=StringLiteral("uD=`=BC*:gTg@57UN(3qMl u&sT=*Z")                        │
│ 2024-02-26T21:05:17.544787Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.544815Z  INFO spiral_temp_test:         │
│ input=Comment("b':")                                                         │
│ 2024-02-26T21:05:17.544848Z  INFO spiral_temp_test:         │
│ input=Comment("Cen!,Rju$.Us.{\"/H=")                                         │
│ 2024-02-26T21:05:17.544875Z  INFO spiral_temp_test:         │
│ input=Integer(6902500900541684513)                                           │
│ 2024-02-26T21:05:17.544910Z  INFO spiral_temp_test:         │
│ input=Comment("-`v/|{+C*:e@`P!x&>nw/=b\\U).0V")                              │
│ 2024-02-26T21:05:17.544946Z  INFO spiral_temp_test:         │
│ input=StringLiteral("9*oes`V&BP)`pN::")                                      │
│ 2024-02-26T21:05:17.544975Z  INFO spiral_temp_test:         │
│ input=Operator("*")                                                          │
│ 2024-02-26T21:05:17.545003Z  INFO spiral_temp_test:         │
│ input=Identifier("dslXqx")                                                   │
│ 2024-02-26T21:05:17.545040Z  INFO spiral_temp_test:         │
│ input=StringLiteral("V'X=u_(_8/Yf9{B=Q=`{8.k%$'T")                           │
│ 2024-02-26T21:05:17.545070Z  INFO spiral_temp_test:         │
│ input=Operator("+")                                                          │
│ 2024-02-26T21:05:17.545094Z  INFO spiral_temp_test:         │
│ input=Integer(5861908703817709096)                                           │
│ 2024-02-26T21:05:17.545121Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.545148Z  INFO spiral_temp_test:         │
│ input=Operator("/")                                                          │
│ 2024-02-26T21:05:17.545182Z  INFO spiral_temp_test:         │
│ input=Comment("&S/W+^6g@_Y\\<}/'$l=lY{=")                                    │
│ 2024-02-26T21:05:17.545210Z  INFO spiral_temp_test:         │
│ input=Integer(7093155049872964445)                                           │
│ 2024-02-26T21:05:17.545238Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.545270Z  INFO spiral_temp_test:         │
│ input=StringLiteral("E]?9*//Dt$N|]_+dYxY")                                   │
│ 2024-02-26T21:05:17.545300Z  INFO spiral_temp_test:         │
│ input=StringLiteral("?")                                                     │
│ 2024-02-26T21:05:17.545329Z  INFO spiral_temp_test:         │
│ input=StringLiteral("&R%kao/")                                               │
│ 2024-02-26T21:05:17.545358Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.545390Z  INFO spiral_temp_test:         │
│ input=Comment("5v\\s@&o&\\7-/+")                                             │
│ 2024-02-26T21:05:17.545424Z  INFO spiral_temp_test:         │
│ input=Comment("=$fZG;c4+XS9$\\9.J=<Z")                                       │
│ 2024-02-26T21:05:17.545462Z  INFO spiral_temp_test:         │
│ input=Comment("`\\W-\\VhJ\"SdL/O$V?BnO%.c) 5^:8=`W")                         │
│ 2024-02-26T21:05:17.545493Z  INFO spiral_temp_test:         │
│ input=Identifier("xyNMpI")                                                   │
│ 2024-02-26T21:05:17.545529Z  INFO spiral_temp_test:         │
│ input=Comment("{W'GI&4I.:\\2>C=V`M1df(&?9\\@&")                              │
│ 2024-02-26T21:05:17.545565Z  INFO spiral_temp_test:         │
│ input=Comment(".*8hsb$ED\\L]?ve7\"\"?s-\"=S")                                │
│ 2024-02-26T21:05:17.545741Z  INFO spiral_temp_test:         │
│ input=StringLiteral("7-J'Ux~<Y")                                             │
│ 2024-02-26T21:05:17.545778Z  INFO spiral_temp_test:         │
│ input=Comment("?B5Y:*a;x$` bH6..\"<W{sS`=E_=")                               │
│ 2024-02-26T21:05:17.545804Z  INFO spiral_temp_test:         │
│ input=Identifier("Vhm")                                                      │
│ 2024-02-26T21:05:17.545826Z  INFO spiral_temp_test:         │
│ input=Integer(-2668329908684578295)                                          │
│ 2024-02-26T21:05:17.545850Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.545875Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.545904Z  INFO spiral_temp_test:         │
│ input=StringLiteral("1i.MK{=@*w7I?hQ8")                                      │
│ 2024-02-26T21:05:17.545935Z  INFO spiral_temp_test:         │
│ input=Identifier("MeKquYgyQ6eKnsn38UL2pw")                                   │
│ 2024-02-26T21:05:17.545959Z  INFO spiral_temp_test:         │
│ input=Integer(5760731006293753802)                                           │
│ 2024-02-26T21:05:17.545980Z  INFO spiral_temp_test:         │
│ input=Integer(-7379790341031091314)                                          │
│ 2024-02-26T21:05:17.546011Z  INFO spiral_temp_test:         │
│ input=Comment("`VvI,d>hO.:w:%$]KW\":%H%G%1~%")                               │
│ 2024-02-26T21:05:17.546035Z  INFO spiral_temp_test:         │
│ input=Integer(-5756975137664134539)                                          │
│ 2024-02-26T21:05:17.546067Z  INFO spiral_temp_test:         │
│ input=Comment("d?u(E'.z.==?::{$?{&e3::{nO2H")                                │
│ 2024-02-26T21:05:17.546094Z  INFO spiral_temp_test:         │
│ input=Comment("B<07")                                                        │
│ 2024-02-26T21:05:17.546122Z  INFO spiral_temp_test:         │
│ input=Comment("x:JA<\\}Ik?V*8`GZX")                                          │
│ 2024-02-26T21:05:17.546149Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.546175Z  INFO spiral_temp_test:         │
│ input=StringLiteral("&$brO<.I1o")                                            │
│ 2024-02-26T21:05:17.546200Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.546224Z  INFO spiral_temp_test:         │
│ input=Operator("(")                                                          │
│ 2024-02-26T21:05:17.546255Z  INFO spiral_temp_test:         │
│ input=Comment(".9\\%/\"An6Ad*&M'U~f99o/qf")                                  │
│ 2024-02-26T21:05:17.546279Z  INFO spiral_temp_test:         │
│ input=Integer(-5410245795230560551)                                          │
│ 2024-02-26T21:05:17.546309Z  INFO spiral_temp_test:         │
│ input=StringLiteral("?4xJ$^Ec%/f&R?.X6r#RN")                                 │
│ 2024-02-26T21:05:17.546339Z  INFO spiral_temp_test:         │
│ input=StringLiteral("vs7d&&4~1!`~'%S{xn!*")                                  │
│ 2024-02-26T21:05:17.546373Z  INFO spiral_temp_test:         │
│ input=Identifier("wPsMJ7nJr39Jf6o59rzaN6V28rT45DG2")                         │
│ 2024-02-26T21:05:17.546397Z  INFO spiral_temp_test:         │
│ input=Integer(2267555153859994113)                                           │
│ 2024-02-26T21:05:17.546426Z  INFO spiral_temp_test:         │
│ input=Identifier("JWKE9V62K6iHc4e4bDv")                                      │
│ 2024-02-26T21:05:17.546450Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.546471Z  INFO spiral_temp_test:         │
│ input=Integer(7777569929975675634)                                           │
│ 2024-02-26T21:05:17.546498Z  INFO spiral_temp_test:         │
│ input=Comment("*>G&{XTFr*y/%")                                               │
│ 2024-02-26T21:05:17.546523Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.546550Z  INFO spiral_temp_test:         │
│ input=StringLiteral("/)*t|b/s9X")                                            │
│ 2024-02-26T21:05:17.546581Z  INFO spiral_temp_test:         │
│ input=Identifier("PL9AdKxEdJXf63n8ryv6R2d39X")                               │
│ 2024-02-26T21:05:17.546607Z  INFO spiral_temp_test:         │
│ input=Comment("CM^_")                                                        │
│ 2024-02-26T21:05:17.546638Z  INFO spiral_temp_test:         │
│ input=Comment("<mrgN6Gl]<\\-+? )|{O+.?")                                     │
│ 2024-02-26T21:05:17.546663Z  INFO spiral_temp_test:         │
│ input=Identifier("kOL")                                                      │
│ 2024-02-26T21:05:17.546693Z  INFO spiral_temp_test:         │
│ input=Identifier("VxNHc2d9wW78ZUJ2Jy95SHTO")                                 │
│ 2024-02-26T21:05:17.546718Z  INFO spiral_temp_test:         │
│ input=StringLiteral("-d$;")                                                  │
│ 2024-02-26T21:05:17.546740Z  INFO spiral_temp_test:         │
│ input=Integer(8148960465318076799)                                           │
│ 2024-02-26T21:05:17.546760Z  INFO spiral_temp_test:         │
│ input=Integer(4576557270122818771)                                           │
│ 2024-02-26T21:05:17.546783Z  INFO spiral_temp_test:         │
│ input=Operator("=")                                                          │
│ 2024-02-26T21:05:17.546806Z  INFO spiral_temp_test:         │
│ input=Operator("*")                                                          │
│ 2024-02-26T21:05:17.546827Z  INFO spiral_temp_test:         │
│ input=Operator("+")                                                          │
│ 2024-02-26T21:05:17.546853Z  INFO spiral_temp_test:         │
│ input=StringLiteral("N`xZlM&g*")                                             │
│ 2024-02-26T21:05:17.546883Z  INFO spiral_temp_test:         │
│ input=StringLiteral("'&5kWB{?Kv{*f i`XkA")                                   │
│ 2024-02-26T21:05:17.546906Z  INFO spiral_temp_test:         │
│ input=Integer(3255998735054399244)                                           │
│ 2024-02-26T21:05:17.546940Z  INFO spiral_temp_test:         │
│ input=StringLiteral("/c5'.:Wa`U}VsDE+c;N$ seiz>wv'")                         │
│ 2024-02-26T21:05:17.546967Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.546989Z  INFO spiral_temp_test:         │
│ input=Operator("-")                                                          │
│ 2024-02-26T21:05:17.547021Z  INFO spiral_temp_test:         │
│ input=Comment("/\\'=.A_L':{L8\"=9=jJ/qY\"\\{,&7:")                           │
│ 2024-02-26T21:05:17.547045Z  INFO spiral_temp_test:         │
│ input=Integer(8322068332491177617)                                           │
│ 2024-02-26T21:05:17.547069Z  INFO spiral_temp_test:         │
│ input=Operator(")")                                                          │
│ 2024-02-26T21:05:17.547094Z  INFO spiral_temp_test:         │
│ input=Comment("x;%:$*")                                                      │
│ 2024-02-26T21:05:17.547117Z  INFO spiral_temp_test:         │
│ input=Operator("+")                                                          │
│ 2024-02-26T21:05:17.547144Z  INFO spiral_temp_test:         │
│ input=Comment("~p/<0#wK{\\`N&dD")                                            │
│ 2024-02-26T21:05:17.547173Z  INFO spiral_temp_test:         │
│ input=Comment("@&$f'$0`$n^*!")                                               │
│ 2024-02-26T21:05:17.547200Z  INFO spiral_temp_test:         │
│ input=StringLiteral("FaT~`.&jV(")                                            │
│ 2024-02-26T21:05:17.547233Z  INFO spiral_temp_test:         │
│ input=Identifier("UFrgDRg2693zh3dpzg98N2jNQFGSh6BCq")                        │
│ 2024-02-26T21:05:17.547267Z  INFO spiral_temp_test:         │
│ input=Comment("|''8`?=#*1Yf0T$I*$qV(2<4jIi*Rh$E")                            │
│ 2024-02-26T21:05:17.547300Z  INFO spiral_temp_test:         │
│ input=StringLiteral(":R{(${S,#Z8Z#WmJMf<&&")                                 │
│ 2024-02-26T21:05:17.547330Z  INFO spiral_temp_test:         │
│ input=StringLiteral("&.}v5y@1?w`UFo{a?{i")                                   │
│ 2024-02-26T21:05:17.547359Z  INFO spiral_temp_test:         │
│ input=Comment(".= C~v}|d.Xw%t")                                              │
│ 2024-02-26T21:05:17.547390Z  INFO spiral_temp_test:         │
│ input=Comment("rK%Et&gbsxmva$Qec?Hy.R]")                                     │
│ 2024-02-26T21:05:17.547416Z  INFO spiral_temp_test:         │
│ input=Operator("*")                                                          │
│ 2024-02-26T21:05:17.547440Z  INFO spiral_temp_test:         │
│ input=Identifier("r8hj1o")                                                   │
│ 2024-02-26T21:05:17.547469Z  INFO spiral_temp_test:         │
│ input=StringLiteral("e:=P/vs|f$c.:{;Ru%&E")                                  │
│ 2024-02-26T21:05:17.547497Z  INFO spiral_temp_test:         │
│ input=Identifier("RJUWMEdDNae11E5")                                          │
│ 2024-02-26T21:05:17.547527Z  INFO spiral_temp_test:         │
│ input=Comment("S *N=':/$n?=xA4e\"<et{")                                      │
│ 2024-02-26T21:05:17.547551Z  INFO spiral_temp_test:         │
│ input=Integer(-4812372365295980293)                                          │
│ 2024-02-26T21:05:17.547572Z  INFO spiral_temp_test:         │
│ input=Integer(-2363488103088740271)                                          │
│ 2024-02-26T21:05:17.547602Z  INFO spiral_temp_test:         │
│ input=Identifier("zG9v5BI7AI8Pq67E1mgFt4Gy6dhSi")                            │
│ 2024-02-26T21:05:17.547634Z  INFO spiral_temp_test:         │
│ input=Identifier("SCq0R9r")                                                  │
│ 2024-02-26T21:05:17.547658Z  INFO spiral_temp_test:         │
│ input=Identifier("ve8iu5")                                                   │
│ 2024-02-26T21:05:17.547689Z  INFO spiral_temp_test:         │
│ input=StringLiteral("cT+oY%@r%=g7#,'lD67)")                                  │
│ 2024-02-26T21:05:17.547717Z  INFO spiral_temp_test:         │
│ input=Comment("\":LdP<vcc.")                                                 │
│ 2024-02-26T21:05:17.547745Z  INFO spiral_temp_test:         │
│ input=Integer(-2777804984858874774)                                          │
│ 2024-02-26T21:05:17.547772Z  INFO spiral_temp_test:         │
│ input=Comment("pa'J?&\\QF:p/")                                               │
│ 2024-02-26T21:05:17.547799Z  INFO spiral_temp_test:         │
│ input=Identifier("NGUcWup6iTgv")                                             │
│ test prop_parse_format_idempotent ... ok                                     │
│ test                                                                         │
│ adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... │
│ ok                                                                           │
│                                                                              │
│ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
│ finished in 0.08s                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── pwsh ────────────────────────────────────────────────────────────────────────
{ . $ScriptDir/../../../../target/release/spiral_temp_test$(GetExecutableSuffix)
} | Invoke-Block

╭─[ 6.19ms - stdout ]──────────────────────────────────────────────────────────╮
│ app=test                                                                     │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook build.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 336083 bytes to build.dib.html
In [ ]:
{ . "$ScriptDir/../apps/plot/build.ps1" } | Invoke-Block
 Downloading crates ...
  Downloaded plotters-svg v0.3.5
  Downloaded plotters-backend v0.3.5
  Downloaded plotters v0.3.5
   Compiling num-traits v0.2.18
   Compiling serde v1.0.197
   Compiling serde_json v1.0.114
   Compiling plotters-backend v0.3.5
   Compiling itoa v1.0.10
   Compiling plotters-svg v0.3.5
   Compiling ryu v1.0.17
   Compiling plotters v0.3.5
   Compiling plot v0.0.1 (/home/runner/work/polyglot/polyglot/apps/plot)
    Finished `release` profile [optimized] target(s) in 7.39s
In [ ]:
{ . "$ScriptDir/../lib/spiral/build.ps1" } | Invoke-Block
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 testing.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ # testing                                                                    │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > inl __expect fn log b a =
00:00:02 #29 [Verbose] >     if log
00:00:02 #30 [Verbose] >     then $"$\"__expect / actual: %A{!a} / expected: %A{!b}\""
00:00:02 #31 [Verbose] >     else "__expect"
00:00:02 #32 [Verbose] >     |> assert (fn a b)
00:00:02 #33 [Verbose] >
00:00:02 #34 [Verbose] > inl __almost_equal log b a = __expect (fun a b => abs (b - a) < 0.00000001) log
00:00:02 #35 [Verbose] > b a
00:00:02 #36 [Verbose] > inl _almost_equal b a = __almost_equal true b a
00:00:02 #37 [Verbose] >
00:00:02 #38 [Verbose] > inl __equal log b a = __expect (=) log b a
00:00:02 #39 [Verbose] > inl _equal b a = __equal true b a
00:00:02 #40 [Verbose] >
00:00:02 #41 [Verbose] > inl __is_greater_than log b a = __expect (>) log b a
00:00:02 #42 [Verbose] > inl _is_greater_than b a = __is_greater_than true b a
00:00:02 #43 [Verbose] >
00:00:02 #44 [Verbose] > inl __is_greater_than_or_equal log b a = __expect (>=) log b a
00:00:02 #45 [Verbose] > inl _is_greater_than_or_equal b a = __is_greater_than_or_equal true b a
00:00:02 #46 [Verbose] >
00:00:02 #47 [Verbose] > inl __is_less_than log b a = __expect (<) log b a
00:00:02 #48 [Verbose] > inl _is_less_than b a = __is_less_than true b a
00:00:02 #49 [Verbose] >
00:00:02 #50 [Verbose] > inl __is_less_than_or_equal log b a = __expect (<=) log b a
00:00:02 #51 [Verbose] > inl _is_less_than_or_equal b a = __is_less_than_or_equal true b a
00:00:02 #52 [Verbose] >
00:00:02 #53 [Verbose] > inl _throws (fn : () -> ()) : option string =
00:00:02 #54 [Verbose] >     inl none = None : option string
00:00:02 #55 [Verbose] >     inl some (s : string) = Some s
00:00:02 #56 [Verbose] >     $"try !fn (); !none with ex -> !some ex.Message"
00:00:04 #57 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-3038-3853-37205f35218d/main.spi
00:00:05 #58 [Verbose] >
00:00:05 #59 [Verbose] > ╭─[ 3.44s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #60 [Verbose] > │ ()                                                                           │
00:00:05 #61 [Verbose] > │                                                                              │
00:00:05 #62 [Verbose] > │                                                                              │
00:00:05 #63 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #64 [Verbose] >
00:00:05 #65 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #66 [Verbose] > inl print_and_return x =
00:00:05 #67 [Verbose] >     $"printfn $\"print_and_return / x: {!x}\""
00:00:05 #68 [Verbose] >     x
00:00:05 #69 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-3256-5655-53549400cd80/main.spi
00:00:05 #70 [Verbose] >
00:00:05 #71 [Verbose] > ╭─[ 158.01ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #72 [Verbose] > │ ()                                                                           │
00:00:05 #73 [Verbose] > │                                                                              │
00:00:05 #74 [Verbose] > │                                                                              │
00:00:05 #75 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #76 [Verbose] > [NbConvertApp] Converting notebook testing.dib.ipynb to html
00:00:06 #77 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:06 #78 [Verbose] >   validate(nb)
00:00:07 #79 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:07 #80 [Verbose] >   return _pygments_highlight(
00:00:07 #81 [Verbose] > [NbConvertApp] Writing 278254 bytes to testing.dib.html
00:00:07 #82 [Debug] executeAsync / exitCode: 0 / output.Length: 3450
00:00:07 #83 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 common.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ # common                                                                     │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-3813-1319-1198a0f501b1/main.spi
00:00:05 #32 [Verbose] >
00:00:05 #33 [Verbose] > ╭─[ 3.44s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #34 [Verbose] > │ ()                                                                           │
00:00:05 #35 [Verbose] > │                                                                              │
00:00:05 #36 [Verbose] > │                                                                              │
00:00:05 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #38 [Verbose] >
00:00:05 #39 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #40 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #41 [Verbose] > │ ## types                                                                     │
00:00:05 #42 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #43 [Verbose] >
00:00:05 #44 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #45 [Verbose] > nominal any = $"obj"
00:00:05 #46 [Verbose] > nominal disposable = $"System.IDisposable"
00:00:05 #47 [Verbose] > nominal exn = $"exn"
00:00:05 #48 [Verbose] > nominal guid = $"System.Guid"
00:00:05 #49 [Verbose] > nominal unativeint = $"unativeint"
00:00:05 #50 [Verbose] >
00:00:05 #51 [Verbose] > let array x = x
00:00:05 #52 [Verbose] >
00:00:05 #53 [Verbose] > inl unativeint forall t {int}. (n : t) : unativeint =
00:00:05 #54 [Verbose] >     $"unativeint !n"
00:00:05 #55 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4036-3658-3e2c34a97383/main.spi
00:00:05 #56 [Verbose] >
00:00:05 #57 [Verbose] > ╭─[ 176.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #58 [Verbose] > │ ()                                                                           │
00:00:05 #59 [Verbose] > │                                                                              │
00:00:05 #60 [Verbose] > │                                                                              │
00:00:05 #61 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #62 [Verbose] >
00:00:05 #63 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #64 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #65 [Verbose] > │ ## prototype                                                                 │
00:00:05 #66 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #67 [Verbose] >
00:00:05 #68 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #69 [Verbose] > prototype (~:>) r : forall t. t -> r
00:00:05 #70 [Verbose] > prototype append t : t -> t -> t
00:00:05 #71 [Verbose] > prototype of_string t : string -> t
00:00:05 #72 [Verbose] > prototype to_string t : t -> string
00:00:06 #73 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4053-5384-54d594a0b809/main.spi
00:00:06 #74 [Verbose] >
00:00:06 #75 [Verbose] > ╭─[ 138.37ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #76 [Verbose] > │ ()                                                                           │
00:00:06 #77 [Verbose] > │                                                                              │
00:00:06 #78 [Verbose] > │                                                                              │
00:00:06 #79 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #80 [Verbose] >
00:00:06 #81 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #82 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #83 [Verbose] > │ ## null                                                                      │
00:00:06 #84 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #85 [Verbose] >
00:00:06 #86 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #87 [Verbose] > inl null forall t. () : t =
00:00:06 #88 [Verbose] >     $"null |> unbox<`t>"
00:00:06 #89 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4067-6780-614b9d8500bc/main.spi
00:00:06 #90 [Verbose] >
00:00:06 #91 [Verbose] > ╭─[ 137.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #92 [Verbose] > │ ()                                                                           │
00:00:06 #93 [Verbose] > │                                                                              │
00:00:06 #94 [Verbose] > │                                                                              │
00:00:06 #95 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #96 [Verbose] >
00:00:06 #97 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #98 [Verbose] > inl i64 forall t. (x : t) : i64 =
00:00:06 #99 [Verbose] >     $"int64 !x"
00:00:06 #100 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4081-8160-82250cb74b45/main.spi
00:00:06 #101 [Verbose] >
00:00:06 #102 [Verbose] > ╭─[ 164.50ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #103 [Verbose] > │ ()                                                                           │
00:00:06 #104 [Verbose] > │                                                                              │
00:00:06 #105 [Verbose] > │                                                                              │
00:00:06 #106 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #107 [Verbose] >
00:00:06 #108 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #109 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #110 [Verbose] > │ ## pair                                                                      │
00:00:06 #111 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #112 [Verbose] >
00:00:06 #113 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #114 [Verbose] > type pair a b = $"(`a * `b)"
00:00:06 #115 [Verbose] >
00:00:06 #116 [Verbose] > inl pair x y =
00:00:06 #117 [Verbose] >     x, y
00:00:06 #118 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4098-9827-9140aa076bb9/main.spi
00:00:06 #119 [Verbose] >
00:00:06 #120 [Verbose] > ╭─[ 138.75ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #121 [Verbose] > │ ()                                                                           │
00:00:06 #122 [Verbose] > │                                                                              │
00:00:06 #123 [Verbose] > │                                                                              │
00:00:06 #124 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #125 [Verbose] >
00:00:06 #126 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #127 [Verbose] > // // test
00:00:06 #128 [Verbose] >
00:00:06 #129 [Verbose] > pair 1i32 2i32
00:00:06 #130 [Verbose] > |> _equal (1, 2)
00:00:06 #131 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4112-1220-1b82b0e6bfea/main.spi
00:00:07 #132 [Verbose] >
00:00:07 #133 [Verbose] > ╭─[ 512.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #134 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #135 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (1, 2)} / expected:     │
00:00:07 #136 [Verbose] > │ %A{struct (1, 2)}"                                                           │
00:00:07 #137 [Verbose] > │     ()                                                                       │
00:00:07 #138 [Verbose] > │ method0()                                                                    │
00:00:07 #139 [Verbose] > │                                                                              │
00:00:07 #140 [Verbose] > │                                                                              │
00:00:07 #141 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #142 [Verbose] >
00:00:07 #143 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #144 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #145 [Verbose] > │ ## new_pair                                                                  │
00:00:07 #146 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #147 [Verbose] >
00:00:07 #148 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #149 [Verbose] > inl new_pair forall a b. (a : a) (b : b) : pair a b =
00:00:07 #150 [Verbose] >     $"!a, !b"
00:00:07 #151 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4163-6358-6dc9b0e7b98f/main.spi
00:00:07 #152 [Verbose] >
00:00:07 #153 [Verbose] > ╭─[ 120.71ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #154 [Verbose] > │ ()                                                                           │
00:00:07 #155 [Verbose] > │                                                                              │
00:00:07 #156 [Verbose] > │                                                                              │
00:00:07 #157 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #158 [Verbose] >
00:00:07 #159 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #160 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #161 [Verbose] > │ ## from_pair                                                                 │
00:00:07 #162 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #163 [Verbose] >
00:00:07 #164 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #165 [Verbose] > inl from_pair forall a b. (pair : pair a b) : a * b =
00:00:07 #166 [Verbose] >     $"let (a, b) = !pair"
00:00:07 #167 [Verbose] >     $"a", $"b"
00:00:07 #168 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4175-7574-7333c90afe33/main.spi
00:00:07 #169 [Verbose] >
00:00:07 #170 [Verbose] > ╭─[ 121.91ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #171 [Verbose] > │ ()                                                                           │
00:00:07 #172 [Verbose] > │                                                                              │
00:00:07 #173 [Verbose] > │                                                                              │
00:00:07 #174 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #175 [Verbose] >
00:00:07 #176 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #177 [Verbose] > // // test
00:00:07 #178 [Verbose] >
00:00:07 #179 [Verbose] > new_pair "a" 1i32
00:00:07 #180 [Verbose] > |> from_pair
00:00:07 #181 [Verbose] > |> _equal ("a", 1i32)
00:00:07 #182 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4187-8799-8b74b1cede09/main.spi
00:00:07 #183 [Verbose] >
00:00:07 #184 [Verbose] > ╭─[ 217.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #185 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #186 [Verbose] > │     let v0 : string = "a"                                                    │
00:00:07 #187 [Verbose] > │     let v1 : (string * int32) = v0, 1                                        │
00:00:07 #188 [Verbose] > │     let (a, b) = v1                                                          │
00:00:07 #189 [Verbose] > │     let v2 : string = a                                                      │
00:00:07 #190 [Verbose] > │     let v3 : int32 = b                                                       │
00:00:07 #191 [Verbose] > │     let v4 : string = $"__expect / actual: %A{struct (v2, v3)} / expected:   │
00:00:07 #192 [Verbose] > │ %A{struct (v0, 1)}"                                                          │
00:00:07 #193 [Verbose] > │     let v5 : bool = v2 = "a"                                                 │
00:00:07 #194 [Verbose] > │     let v7 : bool =                                                          │
00:00:07 #195 [Verbose] > │         if v5 then                                                           │
00:00:07 #196 [Verbose] > │             let v6 : bool = v3 = 1                                           │
00:00:07 #197 [Verbose] > │             v6                                                               │
00:00:07 #198 [Verbose] > │         else                                                                 │
00:00:07 #199 [Verbose] > │             false                                                            │
00:00:07 #200 [Verbose] > │     let v8 : bool = v7 = false                                               │
00:00:07 #201 [Verbose] > │     if v8 then                                                               │
00:00:07 #202 [Verbose] > │         failwith<unit> v4                                                    │
00:00:07 #203 [Verbose] > │ method0()                                                                    │
00:00:07 #204 [Verbose] > │                                                                              │
00:00:07 #205 [Verbose] > │                                                                              │
00:00:07 #206 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #207 [Verbose] >
00:00:07 #208 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #209 [Verbose] > // // test
00:00:07 #210 [Verbose] >
00:00:07 #211 [Verbose] > new_pair "a" (new_pair 1i32 "b")
00:00:07 #212 [Verbose] > |> from_pair
00:00:07 #213 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4209-0987-0791c9d51637/main.spi
00:00:07 #214 [Verbose] >
00:00:07 #215 [Verbose] > ╭─[ 220.22ms - return value ]──────────────────────────────────────────────────╮
00:00:07 #216 [Verbose] > │ <details open="open" class="dni-treeview"><summary><span                     │
00:00:07 #217 [Verbose] > │ class="dni-code-hint"><code>(a, (1,                                          │
00:00:07 #218 [Verbose] > │ b))</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
00:00:07 #219 [Verbose] > │ d>Item1</td><td><div                                                         │
00:00:07 #220 [Verbose] > │ class="dni-plaintext"><pre>a</pre></div></td></tr><tr><td>Item2</td><td><det │
00:00:07 #221 [Verbose] > │ ails class="dni-treeview"><summary><span class="dni-code-hint"><code>(1,     │
00:00:07 #222 [Verbose] > │ b)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
00:00:07 #223 [Verbose] > │ >Item1</td><td><div                                                          │
00:00:07 #224 [Verbose] > │ class="dni-plaintext"><pre>1</pre></div></td></tr><tr><td>Item2</td><td><div │
00:00:07 #225 [Verbose] > │ class="dni-plaintext"><pre>b</pre></div></td></tr></tbody></table></div></de │
00:00:07 #226 [Verbose] > │ tails></td></tr></tbody></table></div></details><style>                      │
00:00:07 #227 [Verbose] > │ .dni-code-hint {                                                             │
00:00:07 #228 [Verbose] > │     font-style: italic;                                                      │
00:00:07 #229 [Verbose] > │     overflow: hidden;                                                        │
00:00:07 #230 [Verbose] > │     white-space: nowrap;                                                     │
00:00:07 #231 [Verbose] > │ }                                                                            │
00:00:07 #232 [Verbose] > │ .dni-treeview {                                                              │
00:00:07 #233 [Verbose] > │ ...                                                                          │
00:00:07 #234 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #235 [Verbose] >
00:00:07 #236 [Verbose] > ╭─[ 229.64ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #237 [Verbose] > │ let rec method0 () : struct (string * (int32 * string)) =                    │
00:00:07 #238 [Verbose] > │     let v0 : string = "b"                                                    │
00:00:07 #239 [Verbose] > │     let v1 : (int32 * string) = 1, v0                                        │
00:00:07 #240 [Verbose] > │     let v2 : string = "a"                                                    │
00:00:07 #241 [Verbose] > │     let v3 : (string * (int32 * string)) = v2, v1                            │
00:00:07 #242 [Verbose] > │     let (a, b) = v3                                                          │
00:00:07 #243 [Verbose] > │     let v4 : string = a                                                      │
00:00:07 #244 [Verbose] > │     let v5 : (int32 * string) = b                                            │
00:00:07 #245 [Verbose] > │     struct (v4, v5)                                                          │
00:00:07 #246 [Verbose] > │ method0()                                                                    │
00:00:07 #247 [Verbose] > │                                                                              │
00:00:07 #248 [Verbose] > │                                                                              │
00:00:07 #249 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #250 [Verbose] >
00:00:07 #251 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #252 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #253 [Verbose] > │ ## log_level_type                                                            │
00:00:07 #254 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #255 [Verbose] >
00:00:07 #256 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #257 [Verbose] > union log_level_type =
00:00:07 #258 [Verbose] >     | Verbose
00:00:07 #259 [Verbose] >     | Debug
00:00:07 #260 [Verbose] >     | Info
00:00:07 #261 [Verbose] >     | Warning
00:00:07 #262 [Verbose] >     | Critical
00:00:07 #263 [Verbose] >
00:00:07 #264 [Verbose] > instance to_string log_level_type = function
00:00:07 #265 [Verbose] >     | Verbose => "Verbose"
00:00:07 #266 [Verbose] >     | Debug => "Debug"
00:00:07 #267 [Verbose] >     | Info => "Info"
00:00:07 #268 [Verbose] >     | Warning => "Warning"
00:00:07 #269 [Verbose] >     | Critical => "Critical"
00:00:07 #270 [Verbose] >
00:00:07 #271 [Verbose] > instance of_string log_level_type = function
00:00:07 #272 [Verbose] >     | "Verbose" => Verbose
00:00:07 #273 [Verbose] >     | "Debug" => Debug
00:00:07 #274 [Verbose] >     | "Info" => Info
00:00:07 #275 [Verbose] >     | "Warning" => Warning
00:00:07 #276 [Verbose] >     | "Critical" => Critical
00:00:07 #277 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4233-3307-3fe574bca91d/main.spi
00:00:07 #278 [Verbose] >
00:00:07 #279 [Verbose] > ╭─[ 125.37ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #280 [Verbose] > │ ()                                                                           │
00:00:07 #281 [Verbose] > │                                                                              │
00:00:07 #282 [Verbose] > │                                                                              │
00:00:07 #283 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #284 [Verbose] >
00:00:07 #285 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #286 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #287 [Verbose] > │ ## to_any                                                                    │
00:00:07 #288 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #289 [Verbose] >
00:00:07 #290 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #291 [Verbose] > inl to_any forall t. (obj : t) : any =
00:00:07 #292 [Verbose] >     $"!obj"
00:00:07 #293 [Verbose] >
00:00:07 #294 [Verbose] > instance (~:>) any = to_any
00:00:07 #295 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4245-4568-4a43022b3fa0/main.spi
00:00:08 #296 [Verbose] >
00:00:08 #297 [Verbose] > ╭─[ 122.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #298 [Verbose] > │ ()                                                                           │
00:00:08 #299 [Verbose] > │                                                                              │
00:00:08 #300 [Verbose] > │                                                                              │
00:00:08 #301 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #302 [Verbose] >
00:00:08 #303 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #304 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #305 [Verbose] > │ ## (/@)                                                                      │
00:00:08 #306 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #307 [Verbose] >
00:00:08 #308 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #309 [Verbose] > inl (/@) a b =
00:00:08 #310 [Verbose] >     b |> append a
00:00:08 #311 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4258-5811-54ae1e97fdb9/main.spi
00:00:08 #312 [Verbose] >
00:00:08 #313 [Verbose] > ╭─[ 122.33ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #314 [Verbose] > │ ()                                                                           │
00:00:08 #315 [Verbose] > │                                                                              │
00:00:08 #316 [Verbose] > │                                                                              │
00:00:08 #317 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #318 [Verbose] >
00:00:08 #319 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #320 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #321 [Verbose] > │ ## unbox                                                                     │
00:00:08 #322 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #323 [Verbose] >
00:00:08 #324 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #325 [Verbose] > inl unbox forall t u. (x : t) : u =
00:00:08 #326 [Verbose] >     $"!x |> unbox<`u>"
00:00:08 #327 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4270-7053-78a1b28d14f4/main.spi
00:00:08 #328 [Verbose] >
00:00:08 #329 [Verbose] > ╭─[ 132.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #330 [Verbose] > │ ()                                                                           │
00:00:08 #331 [Verbose] > │                                                                              │
00:00:08 #332 [Verbose] > │                                                                              │
00:00:08 #333 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #334 [Verbose] >
00:00:08 #335 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #336 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #337 [Verbose] > │ ## (/+)                                                                      │
00:00:08 #338 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #339 [Verbose] >
00:00:08 #340 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #341 [Verbose] > inl (/+) forall t. (a : t) (b : t) : t =
00:00:08 #342 [Verbose] >     $"!a + !b"
00:00:08 #343 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4283-8380-8ba5ad54b58b/main.spi
00:00:08 #344 [Verbose] >
00:00:08 #345 [Verbose] > ╭─[ 117.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #346 [Verbose] > │ ()                                                                           │
00:00:08 #347 [Verbose] > │                                                                              │
00:00:08 #348 [Verbose] > │                                                                              │
00:00:08 #349 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #350 [Verbose] >
00:00:08 #351 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #352 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #353 [Verbose] > │ ## (||>)                                                                     │
00:00:08 #354 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #355 [Verbose] >
00:00:08 #356 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #357 [Verbose] > inl (||>) (arg1, arg2) fn =
00:00:08 #358 [Verbose] >     arg2 |> fn arg1
00:00:08 #359 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4295-9567-95e0a59ad7d4/main.spi
00:00:08 #360 [Verbose] >
00:00:08 #361 [Verbose] > ╭─[ 118.46ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #362 [Verbose] > │ ()                                                                           │
00:00:08 #363 [Verbose] > │                                                                              │
00:00:08 #364 [Verbose] > │                                                                              │
00:00:08 #365 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #366 [Verbose] >
00:00:08 #367 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #368 [Verbose] > // // test
00:00:08 #369 [Verbose] >
00:00:08 #370 [Verbose] > (3i32, 2i32)
00:00:08 #371 [Verbose] > ||> fun a b => a - b
00:00:08 #372 [Verbose] > |> _equal 1
00:00:08 #373 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4307-0755-04dee5a4297b/main.spi
00:00:08 #374 [Verbose] >
00:00:08 #375 [Verbose] > ╭─[ 131.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #376 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #377 [Verbose] > │     let v0 : string = $"__expect / actual: %A{1} / expected: %A{1}"          │
00:00:08 #378 [Verbose] > │     ()                                                                       │
00:00:08 #379 [Verbose] > │ method0()                                                                    │
00:00:08 #380 [Verbose] > │                                                                              │
00:00:08 #381 [Verbose] > │                                                                              │
00:00:08 #382 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #383 [Verbose] >
00:00:08 #384 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #385 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #386 [Verbose] > │ ## flip                                                                      │
00:00:08 #387 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #388 [Verbose] >
00:00:08 #389 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #390 [Verbose] > inl flip fn a b =
00:00:08 #391 [Verbose] >     fn b a
00:00:08 #392 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4320-2085-23644b627093/main.spi
00:00:08 #393 [Verbose] >
00:00:08 #394 [Verbose] > ╭─[ 119.48ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #395 [Verbose] > │ ()                                                                           │
00:00:08 #396 [Verbose] > │                                                                              │
00:00:08 #397 [Verbose] > │                                                                              │
00:00:08 #398 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #399 [Verbose] >
00:00:08 #400 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #401 [Verbose] > // // test
00:00:08 #402 [Verbose] >
00:00:08 #403 [Verbose] > (1i32, 2i32)
00:00:08 #404 [Verbose] > ||> flip pair
00:00:08 #405 [Verbose] > |> _equal (2, 1)
00:00:08 #406 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4332-3283-3d746b667e4d/main.spi
00:00:08 #407 [Verbose] >
00:00:08 #408 [Verbose] > ╭─[ 127.37ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #409 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #410 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (2, 1)} / expected:     │
00:00:08 #411 [Verbose] > │ %A{struct (2, 1)}"                                                           │
00:00:08 #412 [Verbose] > │     ()                                                                       │
00:00:08 #413 [Verbose] > │ method0()                                                                    │
00:00:08 #414 [Verbose] > │                                                                              │
00:00:08 #415 [Verbose] > │                                                                              │
00:00:08 #416 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #417 [Verbose] >
00:00:08 #418 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #419 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #420 [Verbose] > │ ## join_body                                                                 │
00:00:08 #421 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #422 [Verbose] >
00:00:08 #423 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #424 [Verbose] > inl join_body body acc x =
00:00:08 #425 [Verbose] >     if var_is x |> not
00:00:08 #426 [Verbose] >     then body acc x
00:00:08 #427 [Verbose] >     else
00:00:08 #428 [Verbose] >         inl acc = dyn acc
00:00:08 #429 [Verbose] >         join body acc x
00:00:08 #430 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4345-4568-447324c08e32/main.spi
00:00:09 #431 [Verbose] >
00:00:09 #432 [Verbose] > ╭─[ 126.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #433 [Verbose] > │ ()                                                                           │
00:00:09 #434 [Verbose] > │                                                                              │
00:00:09 #435 [Verbose] > │                                                                              │
00:00:09 #436 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #437 [Verbose] >
00:00:09 #438 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #439 [Verbose] > // // test
00:00:09 #440 [Verbose] >
00:00:09 #441 [Verbose] > inl rec fold_list f s = function
00:00:09 #442 [Verbose] >     | Cons (x, x') => fold_list f (f s x) x'
00:00:09 #443 [Verbose] >     | Nil => s
00:00:09 #444 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4358-5839-53ef5ab2c110/main.spi
00:00:09 #445 [Verbose] >
00:00:09 #446 [Verbose] > ╭─[ 147.67ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #447 [Verbose] > │ ()                                                                           │
00:00:09 #448 [Verbose] > │                                                                              │
00:00:09 #449 [Verbose] > │                                                                              │
00:00:09 #450 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #451 [Verbose] >
00:00:09 #452 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #453 [Verbose] > // // test
00:00:09 #454 [Verbose] >
00:00:09 #455 [Verbose] > [[5i32; 4; join 3; 2; 1]]
00:00:09 #456 [Verbose] > |> fold_list (+) 0
00:00:09 #457 [Verbose] > |> _equal 15
00:00:09 #458 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4373-7317-7f384a40591c/main.spi
00:00:09 #459 [Verbose] >
00:00:09 #460 [Verbose] > ╭─[ 176.50ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #461 [Verbose] > │ let rec method1 () : int32 =                                                 │
00:00:09 #462 [Verbose] > │     3                                                                        │
00:00:09 #463 [Verbose] > │ and method0 () : unit =                                                      │
00:00:09 #464 [Verbose] > │     let v0 : int32 = method1()                                               │
00:00:09 #465 [Verbose] > │     let v1 : int32 = 9 + v0                                                  │
00:00:09 #466 [Verbose] > │     let v2 : int32 = v1 + 2                                                  │
00:00:09 #467 [Verbose] > │     let v3 : int32 = v2 + 1                                                  │
00:00:09 #468 [Verbose] > │     let v4 : string = $"__expect / actual: %A{v3} / expected: %A{15}"        │
00:00:09 #469 [Verbose] > │     let v5 : bool = v3 = 15                                                  │
00:00:09 #470 [Verbose] > │     let v6 : bool = v5 = false                                               │
00:00:09 #471 [Verbose] > │     if v6 then                                                               │
00:00:09 #472 [Verbose] > │         failwith<unit> v4                                                    │
00:00:09 #473 [Verbose] > │ method0()                                                                    │
00:00:09 #474 [Verbose] > │                                                                              │
00:00:09 #475 [Verbose] > │                                                                              │
00:00:09 #476 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #477 [Verbose] >
00:00:09 #478 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #479 [Verbose] > // // test
00:00:09 #480 [Verbose] >
00:00:09 #481 [Verbose] > [[5i32; 4; join 3; 2; 1]]
00:00:09 #482 [Verbose] > |> fold_list (join_body (+)) 0
00:00:09 #483 [Verbose] > |> _equal 15
00:00:09 #484 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4390-9090-9d55957e3871/main.spi
00:00:09 #485 [Verbose] >
00:00:09 #486 [Verbose] > ╭─[ 144.47ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #487 [Verbose] > │ let rec method1 () : int32 =                                                 │
00:00:09 #488 [Verbose] > │     3                                                                        │
00:00:09 #489 [Verbose] > │ and method2 (v0 : int32, v1 : int32) : int32 =                               │
00:00:09 #490 [Verbose] > │     let v2 : int32 = v1 + v0                                                 │
00:00:09 #491 [Verbose] > │     v2                                                                       │
00:00:09 #492 [Verbose] > │ and method0 () : unit =                                                      │
00:00:09 #493 [Verbose] > │     let v0 : int32 = method1()                                               │
00:00:09 #494 [Verbose] > │     let v1 : int32 = 9                                                       │
00:00:09 #495 [Verbose] > │     let v2 : int32 = method2(v0, v1)                                         │
00:00:09 #496 [Verbose] > │     let v3 : int32 = v2 + 2                                                  │
00:00:09 #497 [Verbose] > │     let v4 : int32 = v3 + 1                                                  │
00:00:09 #498 [Verbose] > │     let v5 : string = $"__expect / actual: %A{v4} / expected: %A{15}"        │
00:00:09 #499 [Verbose] > │     let v6 : bool = v4 = 15                                                  │
00:00:09 #500 [Verbose] > │     let v7 : bool = v6 = false                                               │
00:00:09 #501 [Verbose] > │     if v7 then                                                               │
00:00:09 #502 [Verbose] > │         failwith<unit> v5                                                    │
00:00:09 #503 [Verbose] > │ method0()                                                                    │
00:00:09 #504 [Verbose] > │                                                                              │
00:00:09 #505 [Verbose] > │                                                                              │
00:00:09 #506 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #507 [Verbose] >
00:00:09 #508 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #509 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #510 [Verbose] > │ ## join_body_unit                                                            │
00:00:09 #511 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #512 [Verbose] >
00:00:09 #513 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #514 [Verbose] > inl join_body_unit body d x =
00:00:09 #515 [Verbose] >     if var_is d |> not
00:00:09 #516 [Verbose] >     then body x
00:00:09 #517 [Verbose] >     else
00:00:09 #518 [Verbose] >         inl x = dyn x
00:00:09 #519 [Verbose] >         join body x
00:00:09 #520 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4405-0558-03d4d3064ee8/main.spi
00:00:09 #521 [Verbose] >
00:00:09 #522 [Verbose] > ╭─[ 219.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #523 [Verbose] > │ ()                                                                           │
00:00:09 #524 [Verbose] > │                                                                              │
00:00:09 #525 [Verbose] > │                                                                              │
00:00:09 #526 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #527 [Verbose] >
00:00:09 #528 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #529 [Verbose] > // // test
00:00:09 #530 [Verbose] >
00:00:09 #531 [Verbose] > [[5i32; 4; join 3; 2; 1]]
00:00:09 #532 [Verbose] > |> fold_list (fun acc n => join_body_unit ((+) acc) n n) 0
00:00:09 #533 [Verbose] > |> _equal 15
00:00:09 #534 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4427-2768-29a6ab3dcc3d/main.spi
00:00:09 #535 [Verbose] >
00:00:09 #536 [Verbose] > ╭─[ 126.09ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #537 [Verbose] > │ let rec method1 () : int32 =                                                 │
00:00:09 #538 [Verbose] > │     3                                                                        │
00:00:09 #539 [Verbose] > │ and method2 (v0 : int32) : int32 =                                           │
00:00:09 #540 [Verbose] > │     let v1 : int32 = 9 + v0                                                  │
00:00:09 #541 [Verbose] > │     v1                                                                       │
00:00:09 #542 [Verbose] > │ and method0 () : unit =                                                      │
00:00:09 #543 [Verbose] > │     let v0 : int32 = method1()                                               │
00:00:09 #544 [Verbose] > │     let v1 : int32 = method2(v0)                                             │
00:00:09 #545 [Verbose] > │     let v2 : int32 = v1 + 2                                                  │
00:00:09 #546 [Verbose] > │     let v3 : int32 = v2 + 1                                                  │
00:00:09 #547 [Verbose] > │     let v4 : string = $"__expect / actual: %A{v3} / expected: %A{15}"        │
00:00:09 #548 [Verbose] > │     let v5 : bool = v3 = 15                                                  │
00:00:09 #549 [Verbose] > │     let v6 : bool = v5 = false                                               │
00:00:09 #550 [Verbose] > │     if v6 then                                                               │
00:00:09 #551 [Verbose] > │         failwith<unit> v4                                                    │
00:00:09 #552 [Verbose] > │ method0()                                                                    │
00:00:09 #553 [Verbose] > │                                                                              │
00:00:09 #554 [Verbose] > │                                                                              │
00:00:09 #555 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #556 [Verbose] >
00:00:09 #557 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #558 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #559 [Verbose] > │ ## run_target                                                                │
00:00:09 #560 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #561 [Verbose] >
00:00:09 #562 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #563 [Verbose] > union target_runtime =
00:00:09 #564 [Verbose] >     | Native
00:00:09 #565 [Verbose] >     | Wasm
00:00:09 #566 [Verbose] >
00:00:09 #567 [Verbose] > union target =
00:00:09 #568 [Verbose] >     | Rust : target_runtime
00:00:09 #569 [Verbose] >     | Fsharp
00:00:09 #570 [Verbose] >
00:00:09 #571 [Verbose] > inl run_target forall t. (fn : target -> (() -> t)) : t =
00:00:09 #572 [Verbose] >     $"let mutable result = None"
00:00:09 #573 [Verbose] >     $"#if FABLE_COMPILER_RUST"
00:00:09 #574 [Verbose] >     $"#if \!WASM"
00:00:09 #575 [Verbose] >     fn (Rust Native) () |> fun x => $"!x"
00:00:09 #576 [Verbose] >     $"#else"
00:00:09 #577 [Verbose] >     fn (Rust Wasm) () |> fun x => $"!x"
00:00:09 #578 [Verbose] >     $"#endif"
00:00:09 #579 [Verbose] >     $"#else"
00:00:09 #580 [Verbose] >     fn Fsharp () |> fun x => $"!x"
00:00:09 #581 [Verbose] >     $"#endif"
00:00:09 #582 [Verbose] >     $"|> fun x -> result <- Some x"
00:00:09 #583 [Verbose] >     $"result |> Option.get"
00:00:09 #584 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4440-4037-459fc9f6d73e/main.spi
00:00:09 #585 [Verbose] >
00:00:09 #586 [Verbose] > ╭─[ 128.33ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #587 [Verbose] > │ ()                                                                           │
00:00:09 #588 [Verbose] > │                                                                              │
00:00:09 #589 [Verbose] > │                                                                              │
00:00:09 #590 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #591 [Verbose] >
00:00:09 #592 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #593 [Verbose] > // // test
00:00:09 #594 [Verbose] >
00:00:09 #595 [Verbose] > run_target function
00:00:09 #596 [Verbose] >     | Fsharp => fun () => $"1uy"
00:00:09 #597 [Verbose] >     | Rust (Native) => fun () => $"2uy"
00:00:09 #598 [Verbose] >     | Rust (Wasm) => fun () => $"3uy"
00:00:09 #599 [Verbose] > |> _equal 1u8
00:00:10 #600 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4453-5319-5f41893c70b3/main.spi
00:00:10 #601 [Verbose] >
00:00:10 #602 [Verbose] > ╭─[ 190.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #603 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #604 [Verbose] > │     let mutable result = None                                                │
00:00:10 #605 [Verbose] > │     #if FABLE_COMPILER_RUST                                                  │
00:00:10 #606 [Verbose] > │     #if !WASM                                                                │
00:00:10 #607 [Verbose] > │     let v0 : uint8 = 2uy                                                     │
00:00:10 #608 [Verbose] > │     v0                                                                       │
00:00:10 #609 [Verbose] > │     #else                                                                    │
00:00:10 #610 [Verbose] > │     let v1 : uint8 = 3uy                                                     │
00:00:10 #611 [Verbose] > │     v1                                                                       │
00:00:10 #612 [Verbose] > │     #endif                                                                   │
00:00:10 #613 [Verbose] > │     #else                                                                    │
00:00:10 #614 [Verbose] > │     let v2 : uint8 = 1uy                                                     │
00:00:10 #615 [Verbose] > │     v2                                                                       │
00:00:10 #616 [Verbose] > │     #endif                                                                   │
00:00:10 #617 [Verbose] > │     |> fun x -> result <- Some x                                             │
00:00:10 #618 [Verbose] > │     let v3 : uint8 = result |> Option.get                                    │
00:00:10 #619 [Verbose] > │     let v4 : string = $"__expect / actual: %A{v3} / expected: %A{1uy}"       │
00:00:10 #620 [Verbose] > │     let v5 : bool = v3 = 1uy                                                 │
00:00:10 #621 [Verbose] > │     let v6 : bool = v5 = false                                               │
00:00:10 #622 [Verbose] > │     if v6 then                                                               │
00:00:10 #623 [Verbose] > │         failwith<unit> v4                                                    │
00:00:10 #624 [Verbose] > │ method0()                                                                    │
00:00:10 #625 [Verbose] > │                                                                              │
00:00:10 #626 [Verbose] > │                                                                              │
00:00:10 #627 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #628 [Verbose] >
00:00:10 #629 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #630 [Verbose] > // // test
00:00:10 #631 [Verbose] > // // rust=
00:00:10 #632 [Verbose] >
00:00:10 #633 [Verbose] > run_target function
00:00:10 #634 [Verbose] >     | Fsharp => fun () => $"1uy"
00:00:10 #635 [Verbose] >     | Rust (Native) => fun () => $"2uy"
00:00:10 #636 [Verbose] >     | Rust (Wasm) => fun () => $"3uy"
00:00:10 #637 [Verbose] > |> (=) 2u8
00:00:10 #638 [Verbose] > |> _equal true
00:00:10 #639 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4472-7236-7b074da8d6d7/main.spi
00:00:12 #640 [Verbose] >
00:00:12 #641 [Verbose] > ╭─[ 2.63s - return value ]─────────────────────────────────────────────────────╮
00:00:12 #642 [Verbose] > │ .rs output:                                                                  │
00:00:12 #643 [Verbose] > │                                                                              │
00:00:12 #644 [Verbose] > │                                                                              │
00:00:12 #645 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #646 [Verbose] >
00:00:12 #647 [Verbose] > ╭─[ 2.64s - stdout ]───────────────────────────────────────────────────────────╮
00:00:12 #648 [Verbose] > │                                                                              │
00:00:12 #649 [Verbose] > │ .fsx:                                                                        │
00:00:12 #650 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:12 #651 [Verbose] > │     let mutable result = None                                                │
00:00:12 #652 [Verbose] > │     #if FABLE_COMPILER_RUST                                                  │
00:00:12 #653 [Verbose] > │     #if !WASM                                                                │
00:00:12 #654 [Verbose] > │     let v0 : uint8 = 2uy                                                     │
00:00:12 #655 [Verbose] > │     v0                                                                       │
00:00:12 #656 [Verbose] > │     #else                                                                    │
00:00:12 #657 [Verbose] > │     let v1 : uint8 = 3uy                                                     │
00:00:12 #658 [Verbose] > │     v1                                                                       │
00:00:12 #659 [Verbose] > │     #endif                                                                   │
00:00:12 #660 [Verbose] > │     #else                                                                    │
00:00:12 #661 [Verbose] > │     let v2 : uint8 = 1uy                                                     │
00:00:12 #662 [Verbose] > │     v2                                                                       │
00:00:12 #663 [Verbose] > │     #endif                                                                   │
00:00:12 #664 [Verbose] > │     |> fun x -> result <- Some x                                             │
00:00:12 #665 [Verbose] > │     let v3 : uint8 = result |> Option.get                                    │
00:00:12 #666 [Verbose] > │     let v4 : bool = 2uy = v3                                                 │
00:00:12 #667 [Verbose] > │     let v5 : string = $"__expect / actual: %A{v4} / expected: %A{true}"      │
00:00:12 #668 [Verbose] > │     let v6 : bool = v4 = false                                               │
00:00:12 #669 [Verbose] > │     if v6 then                                                               │
00:00:12 #670 [Verbose] > │         failwith<unit> v5                                                    │
00:00:12 #671 [Verbose] > │ method0()                                                                    │
00:00:12 #672 [Verbose] > │                                                                              │
00:00:12 #673 [Verbose] > │ .rs:                                                                         │
00:00:12 #674 [Verbose] > │ #![allow(dead_code,)]                                                        │
00:00:12 #675 [Verbose] > │ #![allow(non_camel_case_types,)]                                             │
00:00:12 #676 [Verbose] > │ #![allow(non_snake_case,)]                                                   │
00:00:12 #677 [Verbose] > │ #![allow(non_upper_case_globals,)]                                           │
00:00:12 #678 [Verbose] > │ #![allow(unreachable_code,)]                                                 │
00:00:12 #679 [Verbose] > │ #![allow(unused_attributes,)]                                                │
00:00:12 #680 [Verbose] > │ #![allow(unused_imports,)]                                                   │
00:00:12 #681 [Verbose] > │ #![allow(unused_macros,)]                                                    │
00:00:12 #682 [Verbose] > │ #![allow(unused_parens,)]                                                    │
00:00:12 #683 [Verbose] > │ #![allow(unused_variables,)]                                                 │
00:00:12 #684 [Verbose] > │ mod module_e32d1f60 {                                                        │
00:00:12 #685 [Verbose] > │     pub mod Fs_rs {                                                          │
00:00:12 #686 [Verbose] > │         use super::*;                                                        │
00:00:12 #687 [Verbose] > │         use fable_library_rust::Native_::Any;                                │
00:00:12 #688 [Verbose] > │         use fable_library_rust::Native_::MutCell;                            │
00:00:12 #689 [Verbose] > │         use fable_library_rust::Native_::on_startup;                         │
00:00:12 #690 [Verbose] > │         use fable_library_rust::Option_::getValue;                           │
00:00:12 #691 [Verbose] > │         use fable_library_rust::String_::sprintf;                            │
00:00:12 #692 [Verbose] > │         pub fn method0() {                                                   │
00:00:12 #693 [Verbose] > │             let result: MutCell<Option<u8>> = MutCell::new(None::<u8>);      │
00:00:12 #694 [Verbose] > │             result.set(Some(2_u8));                                          │
00:00:12 #695 [Verbose] > │             {                                                                │
00:00:12 #696 [Verbose] > │                 let v4: bool = 2_u8 == getValue(result.get().clone());       │
00:00:12 #697 [Verbose] > │                 if v4 == false {                                             │
00:00:12 #698 [Verbose] > │                     panic!("{}",                                             │
00:00:12 #699 [Verbose] > │                            sprintf!("__expect / actual: {:?} / expected:     │
00:00:12 #700 [Verbose] > │ {:?}", &v4, &true));                                                         │
00:00:12 #701 [Verbose] > │                 }                                                            │
00:00:12 #702 [Verbose] > │             }                                                                │
00:00:12 #703 [Verbose] > │         }                                                                    │
00:00:12 #704 [Verbose] > │         on_startup!(Fs_rs::method0());                                       │
00:00:12 #705 [Verbose] > │     }                                                                        │
00:00:12 #706 [Verbose] > │ }                                                                            │
00:00:12 #707 [Verbose] > │ pub use module_e32d1f60::*;                                                  │
00:00:12 #708 [Verbose] > │                                                                              │
00:00:12 #709 [Verbose] > │                                                                              │
00:00:12 #710 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #711 [Verbose] >
00:00:12 #712 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #713 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #714 [Verbose] > │ ## nameof                                                                    │
00:00:12 #715 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #716 [Verbose] >
00:00:12 #717 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #718 [Verbose] > inl nameof x : string =
00:00:12 #719 [Verbose] >     $"nameof !x"
00:00:12 #720 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4736-3672-34de6deb8fe8/main.spi
00:00:12 #721 [Verbose] >
00:00:12 #722 [Verbose] > ╭─[ 119.72ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #723 [Verbose] > │ ()                                                                           │
00:00:12 #724 [Verbose] > │                                                                              │
00:00:12 #725 [Verbose] > │                                                                              │
00:00:12 #726 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #727 [Verbose] >
00:00:12 #728 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #729 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #730 [Verbose] > │ ## get_environment_variable                                                  │
00:00:12 #731 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #732 [Verbose] >
00:00:12 #733 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #734 [Verbose] > inl get_environment_variable (var : string) : string =
00:00:12 #735 [Verbose] >     $"System.Environment.GetEnvironmentVariable !var"
00:00:13 #736 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-4748-4879-4f0e5f1cd802/main.spi
00:00:13 #737 [Verbose] >
00:00:13 #738 [Verbose] > ╭─[ 122.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #739 [Verbose] > │ ()                                                                           │
00:00:13 #740 [Verbose] > │                                                                              │
00:00:13 #741 [Verbose] > │                                                                              │
00:00:13 #742 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #743 [Verbose] > [NbConvertApp] Converting notebook common.dib.ipynb to html
00:00:13 #744 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:13 #745 [Verbose] >   validate(nb)
00:00:14 #746 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:14 #747 [Verbose] >   return _pygments_highlight(
00:00:14 #748 [Verbose] > [NbConvertApp] Writing 335470 bytes to common.dib.html
00:00:14 #749 [Debug] executeAsync / exitCode: 0 / output.Length: 50365
00:00:14 #750 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 console.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ # console                                                                    │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-5337-3764-3b45fcdd7de6/main.spi
00:00:05 #32 [Verbose] >
00:00:05 #33 [Verbose] > ╭─[ 3.52s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #34 [Verbose] > │ ()                                                                           │
00:00:05 #35 [Verbose] > │                                                                              │
00:00:05 #36 [Verbose] > │                                                                              │
00:00:05 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #38 [Verbose] >
00:00:05 #39 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #40 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #41 [Verbose] > │ ## write_line                                                                │
00:00:05 #42 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #43 [Verbose] >
00:00:05 #44 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #45 [Verbose] > inl write_line obj : () =
00:00:05 #46 [Verbose] >     $"System.Console.WriteLine !obj"
00:00:05 #47 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-5562-6204-6339fef4d3fc/main.spi
00:00:06 #48 [Verbose] >
00:00:06 #49 [Verbose] > ╭─[ 147.86ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #50 [Verbose] > │ ()                                                                           │
00:00:06 #51 [Verbose] > │                                                                              │
00:00:06 #52 [Verbose] > │                                                                              │
00:00:06 #53 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #54 [Verbose] >
00:00:06 #55 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #56 [Verbose] > inl write_line_ ~obj : () =
00:00:06 #57 [Verbose] >     $"System.Console.WriteLine !obj"
00:00:06 #58 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-5576-7643-788899de639f/main.spi
00:00:06 #59 [Verbose] >
00:00:06 #60 [Verbose] > ╭─[ 139.73ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #61 [Verbose] > │ ()                                                                           │
00:00:06 #62 [Verbose] > │                                                                              │
00:00:06 #63 [Verbose] > │                                                                              │
00:00:06 #64 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #65 [Verbose] >
00:00:06 #66 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #67 [Verbose] > nominal console_color = $"System.ConsoleColor"
00:00:06 #68 [Verbose] >
00:00:06 #69 [Verbose] > inl reset_color () : () =
00:00:06 #70 [Verbose] >     run_target function
00:00:06 #71 [Verbose] >         | Fsharp => fun () => $"System.Console.ResetColor ()"
00:00:06 #72 [Verbose] >         | _ => fun () => ()
00:00:06 #73 [Verbose] >
00:00:06 #74 [Verbose] > inl set_foreground_color (color : console_color) : () =
00:00:06 #75 [Verbose] >     run_target function
00:00:06 #76 [Verbose] >         | Fsharp => fun () => $"System.Console.ForegroundColor <- !color"
00:00:06 #77 [Verbose] >         | _ => fun () => ()
00:00:06 #78 [Verbose] > Building /tmp/!dotnet-repl/20240226-2105-5590-9047-9d7aba016a43/main.spi
00:00:06 #79 [Verbose] >
00:00:06 #80 [Verbose] > ╭─[ 144.92ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #81 [Verbose] > │ ()                                                                           │
00:00:06 #82 [Verbose] > │                                                                              │
00:00:06 #83 [Verbose] > │                                                                              │
00:00:06 #84 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #85 [Verbose] > [NbConvertApp] Converting notebook console.dib.ipynb to html
00:00:07 #86 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:07 #87 [Verbose] >   validate(nb)
00:00:07 #88 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:07 #89 [Verbose] >   return _pygments_highlight(
00:00:07 #90 [Verbose] > [NbConvertApp] Writing 276929 bytes to console.dib.html
00:00:07 #91 [Debug] executeAsync / exitCode: 0 / output.Length: 4515
00:00:07 #92 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 math.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ # math                                                                       │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > // // test
00:00:02 #27 [Verbose] >
00:00:02 #28 [Verbose] > open testing
00:00:04 #29 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0144-4442-4631fe7bec74/main.spi
00:00:05 #30 [Verbose] >
00:00:05 #31 [Verbose] > ╭─[ 3.55s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #32 [Verbose] > │ ()                                                                           │
00:00:05 #33 [Verbose] > │                                                                              │
00:00:05 #34 [Verbose] > │                                                                              │
00:00:05 #35 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #36 [Verbose] >
00:00:05 #37 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #38 [Verbose] > // // test
00:00:05 #39 [Verbose] >
00:00:05 #40 [Verbose] > 2 * 2 / 0.4f64 |> sqrt
00:00:05 #41 [Verbose] > |> _almost_equal 3.1622776601683795
00:00:05 #42 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0376-7644-71188be96f37/main.spi
00:00:06 #43 [Verbose] >
00:00:06 #44 [Verbose] > ╭─[ 510.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #45 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:06 #46 [Verbose] > │     let v0 : string = $"__expect / actual: %A{3.1622776601683795} /          │
00:00:06 #47 [Verbose] > │ expected: %A{3.1622776601683795}"                                            │
00:00:06 #48 [Verbose] > │     ()                                                                       │
00:00:06 #49 [Verbose] > │ method0()                                                                    │
00:00:06 #50 [Verbose] > │                                                                              │
00:00:06 #51 [Verbose] > │                                                                              │
00:00:06 #52 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #53 [Verbose] >
00:00:06 #54 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #55 [Verbose] > // // test
00:00:06 #56 [Verbose] >
00:00:06 #57 [Verbose] > 2f64 / 3
00:00:06 #58 [Verbose] > |> _almost_equal 0.6666666666666666
00:00:06 #59 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0427-2739-2060f470c86d/main.spi
00:00:06 #60 [Verbose] >
00:00:06 #61 [Verbose] > ╭─[ 133.64ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #62 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:06 #63 [Verbose] > │     let v0 : string = $"__expect / actual: %A{0.6666666666666666} /          │
00:00:06 #64 [Verbose] > │ expected: %A{0.6666666666666666}"                                            │
00:00:06 #65 [Verbose] > │     ()                                                                       │
00:00:06 #66 [Verbose] > │ method0()                                                                    │
00:00:06 #67 [Verbose] > │                                                                              │
00:00:06 #68 [Verbose] > │                                                                              │
00:00:06 #69 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #70 [Verbose] >
00:00:06 #71 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #72 [Verbose] > // // test
00:00:06 #73 [Verbose] >
00:00:06 #74 [Verbose] > 2f64 |> log
00:00:06 #75 [Verbose] > |> _almost_equal 0.6931471805599453
00:00:06 #76 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0440-4084-491c0c8aa226/main.spi
00:00:06 #77 [Verbose] >
00:00:06 #78 [Verbose] > ╭─[ 130.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #79 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:06 #80 [Verbose] > │     let v0 : string = $"__expect / actual: %A{0.6931471805599453} /          │
00:00:06 #81 [Verbose] > │ expected: %A{0.6931471805599453}"                                            │
00:00:06 #82 [Verbose] > │     ()                                                                       │
00:00:06 #83 [Verbose] > │ method0()                                                                    │
00:00:06 #84 [Verbose] > │                                                                              │
00:00:06 #85 [Verbose] > │                                                                              │
00:00:06 #86 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #87 [Verbose] >
00:00:06 #88 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #89 [Verbose] > // // test
00:00:06 #90 [Verbose] >
00:00:06 #91 [Verbose] > pi
00:00:06 #92 [Verbose] > |> _almost_equal 3.141592653589793f64
00:00:06 #93 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0453-5390-5b60f429e757/main.spi
00:00:06 #94 [Verbose] >
00:00:06 #95 [Verbose] > ╭─[ 158.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #96 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:06 #97 [Verbose] > │     let v0 : string = $"__expect / actual: %A{3.141592653589793} / expected: │
00:00:06 #98 [Verbose] > │ %A{3.141592653589793}"                                                       │
00:00:06 #99 [Verbose] > │     ()                                                                       │
00:00:06 #100 [Verbose] > │ method0()                                                                    │
00:00:06 #101 [Verbose] > │                                                                              │
00:00:06 #102 [Verbose] > │                                                                              │
00:00:06 #103 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #104 [Verbose] >
00:00:06 #105 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #106 [Verbose] > // // test
00:00:06 #107 [Verbose] >
00:00:06 #108 [Verbose] > pi |> cos
00:00:06 #109 [Verbose] > |> _equal -1f64
00:00:06 #110 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0469-6987-629cd5c61396/main.spi
00:00:06 #111 [Verbose] >
00:00:06 #112 [Verbose] > ╭─[ 124.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #113 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:06 #114 [Verbose] > │     let v0 : string = $"__expect / actual: %A{-1.0} / expected: %A{-1.0}"    │
00:00:06 #115 [Verbose] > │     ()                                                                       │
00:00:06 #116 [Verbose] > │ method0()                                                                    │
00:00:06 #117 [Verbose] > │                                                                              │
00:00:06 #118 [Verbose] > │                                                                              │
00:00:06 #119 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #120 [Verbose] >
00:00:06 #121 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #122 [Verbose] > // // test
00:00:06 #123 [Verbose] >
00:00:06 #124 [Verbose] > pi
00:00:06 #125 [Verbose] > |> cos
00:00:06 #126 [Verbose] > |> fun n => n / 2f64
00:00:06 #127 [Verbose] > |> _almost_equal -0.5
00:00:07 #128 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0482-8247-8bb894c061e3/main.spi
00:00:07 #129 [Verbose] >
00:00:07 #130 [Verbose] > ╭─[ 186.76ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #131 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #132 [Verbose] > │     let v0 : string = $"__expect / actual: %A{-0.5} / expected: %A{-0.5}"    │
00:00:07 #133 [Verbose] > │     ()                                                                       │
00:00:07 #134 [Verbose] > │ method0()                                                                    │
00:00:07 #135 [Verbose] > │                                                                              │
00:00:07 #136 [Verbose] > │                                                                              │
00:00:07 #137 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #138 [Verbose] >
00:00:07 #139 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #140 [Verbose] > // // test
00:00:07 #141 [Verbose] >
00:00:07 #142 [Verbose] > pi / 2 |> cos
00:00:07 #143 [Verbose] > |> _almost_equal 0.00000000000000006123233995736766f64
00:00:07 #144 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0501-0111-0ac94a6278f9/main.spi
00:00:07 #145 [Verbose] >
00:00:07 #146 [Verbose] > ╭─[ 128.22ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #147 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #148 [Verbose] > │     let v0 : string = $"__expect / actual: %A{6.123233995736766E-17} /       │
00:00:07 #149 [Verbose] > │ expected: %A{6.123233995736766E-17}"                                         │
00:00:07 #150 [Verbose] > │     ()                                                                       │
00:00:07 #151 [Verbose] > │ method0()                                                                    │
00:00:07 #152 [Verbose] > │                                                                              │
00:00:07 #153 [Verbose] > │                                                                              │
00:00:07 #154 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #155 [Verbose] >
00:00:07 #156 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #157 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #158 [Verbose] > │ ## atan2                                                                     │
00:00:07 #159 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #160 [Verbose] >
00:00:07 #161 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #162 [Verbose] > inl atan2 (y : f64) (x : f64) =
00:00:07 #163 [Verbose] >     $"System.Math.Atan2 (!y, !x)" : f64
00:00:07 #164 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0514-1440-11420bedb6df/main.spi
00:00:07 #165 [Verbose] >
00:00:07 #166 [Verbose] > ╭─[ 124.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #167 [Verbose] > │ ()                                                                           │
00:00:07 #168 [Verbose] > │                                                                              │
00:00:07 #169 [Verbose] > │                                                                              │
00:00:07 #170 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #171 [Verbose] >
00:00:07 #172 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #173 [Verbose] > // // test
00:00:07 #174 [Verbose] >
00:00:07 #175 [Verbose] > 0 |> atan2 1
00:00:07 #176 [Verbose] > |> _equal 1.5707963267948966
00:00:07 #177 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0526-2655-2816476fbfb9/main.spi
00:00:07 #178 [Verbose] >
00:00:07 #179 [Verbose] > ╭─[ 309.92ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #180 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #181 [Verbose] > │     let v0 : float = System.Math.Atan2 (1.0, 0.0)                            │
00:00:07 #182 [Verbose] > │     let v1 : string = $"__expect / actual: %A{v0} / expected:                │
00:00:07 #183 [Verbose] > │ %A{1.5707963267948966}"                                                      │
00:00:07 #184 [Verbose] > │     let v2 : bool = v0 = 1.5707963267948966                                  │
00:00:07 #185 [Verbose] > │     let v3 : bool = v2 = false                                               │
00:00:07 #186 [Verbose] > │     if v3 then                                                               │
00:00:07 #187 [Verbose] > │         failwith<unit> v1                                                    │
00:00:07 #188 [Verbose] > │ method0()                                                                    │
00:00:07 #189 [Verbose] > │                                                                              │
00:00:07 #190 [Verbose] > │                                                                              │
00:00:07 #191 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #192 [Verbose] >
00:00:07 #193 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #194 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #195 [Verbose] > │ ## e                                                                         │
00:00:07 #196 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #197 [Verbose] >
00:00:07 #198 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #199 [Verbose] > inl e () =
00:00:07 #200 [Verbose] >     exp 1f64
00:00:07 #201 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0557-5764-51d1eb12dba6/main.spi
00:00:07 #202 [Verbose] >
00:00:07 #203 [Verbose] > ╭─[ 126.50ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #204 [Verbose] > │ ()                                                                           │
00:00:07 #205 [Verbose] > │                                                                              │
00:00:07 #206 [Verbose] > │                                                                              │
00:00:07 #207 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #208 [Verbose] >
00:00:07 #209 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #210 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #211 [Verbose] > │ ## floor                                                                     │
00:00:07 #212 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #213 [Verbose] >
00:00:07 #214 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #215 [Verbose] > inl floor forall t {float}. (x : t) : t =
00:00:07 #216 [Verbose] >     $"floor !x"
00:00:07 #217 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0570-7039-7679b6bbf309/main.spi
00:00:07 #218 [Verbose] >
00:00:07 #219 [Verbose] > ╭─[ 123.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #220 [Verbose] > │ ()                                                                           │
00:00:07 #221 [Verbose] > │                                                                              │
00:00:07 #222 [Verbose] > │                                                                              │
00:00:07 #223 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #224 [Verbose] >
00:00:07 #225 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #226 [Verbose] > // // test
00:00:07 #227 [Verbose] >
00:00:07 #228 [Verbose] > 0.6 |> floor
00:00:07 #229 [Verbose] > |> _equal 0f64
00:00:08 #230 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0582-8277-86d5a438d649/main.spi
00:00:08 #231 [Verbose] >
00:00:08 #232 [Verbose] > ╭─[ 147.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #233 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #234 [Verbose] > │     let v0 : float = floor 0.6                                               │
00:00:08 #235 [Verbose] > │     let v1 : string = $"__expect / actual: %A{v0} / expected: %A{0.0}"       │
00:00:08 #236 [Verbose] > │     let v2 : bool = v0 = 0.0                                                 │
00:00:08 #237 [Verbose] > │     let v3 : bool = v2 = false                                               │
00:00:08 #238 [Verbose] > │     if v3 then                                                               │
00:00:08 #239 [Verbose] > │         failwith<unit> v1                                                    │
00:00:08 #240 [Verbose] > │ method0()                                                                    │
00:00:08 #241 [Verbose] > │                                                                              │
00:00:08 #242 [Verbose] > │                                                                              │
00:00:08 #243 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #244 [Verbose] >
00:00:08 #245 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #246 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #247 [Verbose] > │ ## log_base                                                                  │
00:00:08 #248 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #249 [Verbose] >
00:00:08 #250 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #251 [Verbose] > inl log_base (new_base : f64) (a : f64) =
00:00:08 #252 [Verbose] >     $"System.Math.Log (!a, !new_base)" : f64
00:00:08 #253 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0597-9768-9a993304dd8f/main.spi
00:00:08 #254 [Verbose] >
00:00:08 #255 [Verbose] > ╭─[ 118.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #256 [Verbose] > │ ()                                                                           │
00:00:08 #257 [Verbose] > │                                                                              │
00:00:08 #258 [Verbose] > │                                                                              │
00:00:08 #259 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #260 [Verbose] >
00:00:08 #261 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #262 [Verbose] > // // test
00:00:08 #263 [Verbose] >
00:00:08 #264 [Verbose] > 100 |> log_base 10
00:00:08 #265 [Verbose] > |> _equal 2
00:00:08 #266 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0609-0956-0aa24f0c631f/main.spi
00:00:08 #267 [Verbose] >
00:00:08 #268 [Verbose] > ╭─[ 146.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #269 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #270 [Verbose] > │     let v0 : float = System.Math.Log (100.0, 10.0)                           │
00:00:08 #271 [Verbose] > │     let v1 : string = $"__expect / actual: %A{v0} / expected: %A{2.0}"       │
00:00:08 #272 [Verbose] > │     let v2 : bool = v0 = 2.0                                                 │
00:00:08 #273 [Verbose] > │     let v3 : bool = v2 = false                                               │
00:00:08 #274 [Verbose] > │     if v3 then                                                               │
00:00:08 #275 [Verbose] > │         failwith<unit> v1                                                    │
00:00:08 #276 [Verbose] > │ method0()                                                                    │
00:00:08 #277 [Verbose] > │                                                                              │
00:00:08 #278 [Verbose] > │                                                                              │
00:00:08 #279 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #280 [Verbose] >
00:00:08 #281 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #282 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #283 [Verbose] > │ ## round                                                                     │
00:00:08 #284 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #285 [Verbose] >
00:00:08 #286 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #287 [Verbose] > inl round forall t {float}. (x : t) : t =
00:00:08 #288 [Verbose] >     $"round !x"
00:00:08 #289 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0624-2436-202df079c1d5/main.spi
00:00:08 #290 [Verbose] >
00:00:08 #291 [Verbose] > ╭─[ 120.01ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #292 [Verbose] > │ ()                                                                           │
00:00:08 #293 [Verbose] > │                                                                              │
00:00:08 #294 [Verbose] > │                                                                              │
00:00:08 #295 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #296 [Verbose] >
00:00:08 #297 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #298 [Verbose] > // // test
00:00:08 #299 [Verbose] >
00:00:08 #300 [Verbose] > 0.5 |> round
00:00:08 #301 [Verbose] > |> _equal 0f64
00:00:08 #302 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0636-3636-300dee89ab1e/main.spi
00:00:08 #303 [Verbose] >
00:00:08 #304 [Verbose] > ╭─[ 128.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #305 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #306 [Verbose] > │     let v0 : float = round 0.5                                               │
00:00:08 #307 [Verbose] > │     let v1 : string = $"__expect / actual: %A{v0} / expected: %A{0.0}"       │
00:00:08 #308 [Verbose] > │     let v2 : bool = v0 = 0.0                                                 │
00:00:08 #309 [Verbose] > │     let v3 : bool = v2 = false                                               │
00:00:08 #310 [Verbose] > │     if v3 then                                                               │
00:00:08 #311 [Verbose] > │         failwith<unit> v1                                                    │
00:00:08 #312 [Verbose] > │ method0()                                                                    │
00:00:08 #313 [Verbose] > │                                                                              │
00:00:08 #314 [Verbose] > │                                                                              │
00:00:08 #315 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #316 [Verbose] >
00:00:08 #317 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #318 [Verbose] > // // test
00:00:08 #319 [Verbose] >
00:00:08 #320 [Verbose] > 0.6 |> round
00:00:08 #321 [Verbose] > |> _equal 1f64
00:00:08 #322 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0649-4946-47b3f824b3e7/main.spi
00:00:08 #323 [Verbose] >
00:00:08 #324 [Verbose] > ╭─[ 146.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #325 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #326 [Verbose] > │     let v0 : float = round 0.6                                               │
00:00:08 #327 [Verbose] > │     let v1 : string = $"__expect / actual: %A{v0} / expected: %A{1.0}"       │
00:00:08 #328 [Verbose] > │     let v2 : bool = v0 = 1.0                                                 │
00:00:08 #329 [Verbose] > │     let v3 : bool = v2 = false                                               │
00:00:08 #330 [Verbose] > │     if v3 then                                                               │
00:00:08 #331 [Verbose] > │         failwith<unit> v1                                                    │
00:00:08 #332 [Verbose] > │ method0()                                                                    │
00:00:08 #333 [Verbose] > │                                                                              │
00:00:08 #334 [Verbose] > │                                                                              │
00:00:08 #335 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #336 [Verbose] >
00:00:08 #337 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #338 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #339 [Verbose] > │ ## square                                                                    │
00:00:08 #340 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #341 [Verbose] >
00:00:08 #342 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #343 [Verbose] > inl square x =
00:00:08 #344 [Verbose] >     x ** 2
00:00:08 #345 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0664-6411-6fa1aab8bb71/main.spi
00:00:08 #346 [Verbose] >
00:00:08 #347 [Verbose] > ╭─[ 122.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #348 [Verbose] > │ ()                                                                           │
00:00:08 #349 [Verbose] > │                                                                              │
00:00:08 #350 [Verbose] > │                                                                              │
00:00:08 #351 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #352 [Verbose] >
00:00:08 #353 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #354 [Verbose] > // // test
00:00:08 #355 [Verbose] >
00:00:08 #356 [Verbose] > 5f64
00:00:08 #357 [Verbose] > |> sqrt
00:00:08 #358 [Verbose] > |> square
00:00:08 #359 [Verbose] > |> _almost_equal 5
00:00:08 #360 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0676-7637-77d7b8fbe470/main.spi
00:00:09 #361 [Verbose] >
00:00:09 #362 [Verbose] > ╭─[ 122.26ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #363 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #364 [Verbose] > │     let v0 : string = $"__expect / actual: %A{5.000000000000001} / expected: │
00:00:09 #365 [Verbose] > │ %A{5.0}"                                                                     │
00:00:09 #366 [Verbose] > │     ()                                                                       │
00:00:09 #367 [Verbose] > │ method0()                                                                    │
00:00:09 #368 [Verbose] > │                                                                              │
00:00:09 #369 [Verbose] > │                                                                              │
00:00:09 #370 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #371 [Verbose] >
00:00:09 #372 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #373 [Verbose] > // // test
00:00:09 #374 [Verbose] >
00:00:09 #375 [Verbose] > e () |> square
00:00:09 #376 [Verbose] > |> _almost_equal 7.3890560989306495
00:00:09 #377 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-0688-8870-8879479acdbb/main.spi
00:00:09 #378 [Verbose] >
00:00:09 #379 [Verbose] > ╭─[ 127.03ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #380 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #381 [Verbose] > │     let v0 : string = $"__expect / actual: %A{7.3890560989306495} /          │
00:00:09 #382 [Verbose] > │ expected: %A{7.3890560989306495}"                                            │
00:00:09 #383 [Verbose] > │     ()                                                                       │
00:00:09 #384 [Verbose] > │ method0()                                                                    │
00:00:09 #385 [Verbose] > │                                                                              │
00:00:09 #386 [Verbose] > │                                                                              │
00:00:09 #387 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #388 [Verbose] > [NbConvertApp] Converting notebook math.dib.ipynb to html
00:00:09 #389 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:09 #390 [Verbose] >   validate(nb)
00:00:10 #391 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:10 #392 [Verbose] >   return _pygments_highlight(
00:00:10 #393 [Verbose] > [NbConvertApp] Writing 301909 bytes to math.dib.html
00:00:10 #394 [Debug] executeAsync / exitCode: 0 / output.Length: 24903
00:00:10 #395 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 \"optionm'.dib\"""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ # optionm                                                                    │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1254-5404-5981f33d8770/main.spi
00:00:05 #32 [Verbose] >
00:00:05 #33 [Verbose] > ╭─[ 3.49s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #34 [Verbose] > │ ()                                                                           │
00:00:05 #35 [Verbose] > │                                                                              │
00:00:05 #36 [Verbose] > │                                                                              │
00:00:05 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #38 [Verbose] >
00:00:05 #39 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #40 [Verbose] > open rust_operators
00:00:05 #41 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1479-7911-7a048b763bf9/main.spi
00:00:06 #42 [Verbose] >
00:00:06 #43 [Verbose] > ╭─[ 143.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #44 [Verbose] > │ ()                                                                           │
00:00:06 #45 [Verbose] > │                                                                              │
00:00:06 #46 [Verbose] > │                                                                              │
00:00:06 #47 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #48 [Verbose] >
00:00:06 #49 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #50 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #51 [Verbose] > │ ## default_value                                                             │
00:00:06 #52 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #53 [Verbose] >
00:00:06 #54 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #55 [Verbose] > inl default_value d =
00:00:06 #56 [Verbose] >     optionm.defaultWith d
00:00:06 #57 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1493-9372-98ad42221a4d/main.spi
00:00:06 #58 [Verbose] >
00:00:06 #59 [Verbose] > ╭─[ 150.49ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #60 [Verbose] > │ ()                                                                           │
00:00:06 #61 [Verbose] > │                                                                              │
00:00:06 #62 [Verbose] > │                                                                              │
00:00:06 #63 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #64 [Verbose] >
00:00:06 #65 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #66 [Verbose] > // // test
00:00:06 #67 [Verbose] >
00:00:06 #68 [Verbose] > None
00:00:06 #69 [Verbose] > |> default_value 3i32
00:00:06 #70 [Verbose] > |> _equal 3i32
00:00:06 #71 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1508-0857-0bc157ec9f66/main.spi
00:00:06 #72 [Verbose] >
00:00:06 #73 [Verbose] > ╭─[ 506.73ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #74 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:06 #75 [Verbose] > │     let v0 : string = $"__expect / actual: %A{3} / expected: %A{3}"          │
00:00:06 #76 [Verbose] > │     ()                                                                       │
00:00:06 #77 [Verbose] > │ method0()                                                                    │
00:00:06 #78 [Verbose] > │                                                                              │
00:00:06 #79 [Verbose] > │                                                                              │
00:00:06 #80 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #81 [Verbose] >
00:00:06 #82 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #83 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #84 [Verbose] > │ ## (/??)                                                                     │
00:00:06 #85 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #86 [Verbose] >
00:00:06 #87 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #88 [Verbose] > inl (/??) a b =
00:00:06 #89 [Verbose] >     a |> default_value b
00:00:06 #90 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1559-5935-546ee24d2216/main.spi
00:00:06 #91 [Verbose] >
00:00:06 #92 [Verbose] > ╭─[ 126.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #93 [Verbose] > │ ()                                                                           │
00:00:06 #94 [Verbose] > │                                                                              │
00:00:06 #95 [Verbose] > │                                                                              │
00:00:06 #96 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #97 [Verbose] >
00:00:06 #98 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #99 [Verbose] > // // test
00:00:06 #100 [Verbose] >
00:00:06 #101 [Verbose] > None /?? 3i32
00:00:06 #102 [Verbose] > |> _equal 3i32
00:00:06 #103 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1572-7204-7c045840bbe3/main.spi
00:00:06 #104 [Verbose] >
00:00:06 #105 [Verbose] > ╭─[ 134.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #106 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:06 #107 [Verbose] > │     let v0 : string = $"__expect / actual: %A{3} / expected: %A{3}"          │
00:00:06 #108 [Verbose] > │     ()                                                                       │
00:00:06 #109 [Verbose] > │ method0()                                                                    │
00:00:06 #110 [Verbose] > │                                                                              │
00:00:06 #111 [Verbose] > │                                                                              │
00:00:06 #112 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #113 [Verbose] >
00:00:06 #114 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #115 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #116 [Verbose] > │ ## default_with                                                              │
00:00:06 #117 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #118 [Verbose] >
00:00:06 #119 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #120 [Verbose] > inl default_with fn =
00:00:06 #121 [Verbose] >     function Some x => x | None => fn ()
00:00:07 #122 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1585-8561-8b7a8aa52799/main.spi
00:00:07 #123 [Verbose] >
00:00:07 #124 [Verbose] > ╭─[ 123.52ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #125 [Verbose] > │ ()                                                                           │
00:00:07 #126 [Verbose] > │                                                                              │
00:00:07 #127 [Verbose] > │                                                                              │
00:00:07 #128 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #129 [Verbose] >
00:00:07 #130 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #131 [Verbose] > // // test
00:00:07 #132 [Verbose] >
00:00:07 #133 [Verbose] > None
00:00:07 #134 [Verbose] > |> default_with (fun () => 3i32)
00:00:07 #135 [Verbose] > |> _equal 3i32
00:00:07 #136 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1598-9804-9a20ae8097d1/main.spi
00:00:07 #137 [Verbose] >
00:00:07 #138 [Verbose] > ╭─[ 126.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #139 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #140 [Verbose] > │     let v0 : string = $"__expect / actual: %A{3} / expected: %A{3}"          │
00:00:07 #141 [Verbose] > │     ()                                                                       │
00:00:07 #142 [Verbose] > │ method0()                                                                    │
00:00:07 #143 [Verbose] > │                                                                              │
00:00:07 #144 [Verbose] > │                                                                              │
00:00:07 #145 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #146 [Verbose] >
00:00:07 #147 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #148 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #149 [Verbose] > │ ## choose                                                                    │
00:00:07 #150 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #151 [Verbose] >
00:00:07 #152 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #153 [Verbose] > inl choose fn a b =
00:00:07 #154 [Verbose] >     match a, b with
00:00:07 #155 [Verbose] >     | Some x, Some y => fn x y |> Some
00:00:07 #156 [Verbose] >     | _ => None
00:00:07 #157 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1610-1070-1718c5cf8683/main.spi
00:00:07 #158 [Verbose] >
00:00:07 #159 [Verbose] > ╭─[ 120.79ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #160 [Verbose] > │ ()                                                                           │
00:00:07 #161 [Verbose] > │                                                                              │
00:00:07 #162 [Verbose] > │                                                                              │
00:00:07 #163 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #164 [Verbose] >
00:00:07 #165 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #166 [Verbose] > // // test
00:00:07 #167 [Verbose] >
00:00:07 #168 [Verbose] > (Some 2i32, Some 3)
00:00:07 #169 [Verbose] > ||> choose (+)
00:00:07 #170 [Verbose] > |> _equal (Some 5)
00:00:07 #171 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1622-2286-204f71a3b5f5/main.spi
00:00:07 #172 [Verbose] >
00:00:07 #173 [Verbose] > ╭─[ 540.49ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #174 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:07 #175 [Verbose] > │     | US0_0                                                                  │
00:00:07 #176 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:07 #177 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #178 [Verbose] > │     let v0 : US0 = US0_1(5)                                                  │
00:00:07 #179 [Verbose] > │     let v1 : US0 = US0_1(5)                                                  │
00:00:07 #180 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:07 #181 [Verbose] > │     ()                                                                       │
00:00:07 #182 [Verbose] > │ method0()                                                                    │
00:00:07 #183 [Verbose] > │                                                                              │
00:00:07 #184 [Verbose] > │                                                                              │
00:00:07 #185 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #186 [Verbose] >
00:00:07 #187 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #188 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #189 [Verbose] > │ ## iter                                                                      │
00:00:07 #190 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #191 [Verbose] >
00:00:07 #192 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #193 [Verbose] > inl iter fn = function
00:00:07 #194 [Verbose] >     | Some x => fn x
00:00:07 #195 [Verbose] >     | None => ()
00:00:07 #196 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1677-7705-709398a34474/main.spi
00:00:07 #197 [Verbose] >
00:00:07 #198 [Verbose] > ╭─[ 121.40ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #199 [Verbose] > │ ()                                                                           │
00:00:07 #200 [Verbose] > │                                                                              │
00:00:07 #201 [Verbose] > │                                                                              │
00:00:07 #202 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #203 [Verbose] >
00:00:07 #204 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #205 [Verbose] > // // test
00:00:07 #206 [Verbose] >
00:00:07 #207 [Verbose] > inl n = mut 1i32
00:00:07 #208 [Verbose] > inl fn =
00:00:07 #209 [Verbose] >     fun n' =>
00:00:07 #210 [Verbose] >         n <- *n + n'
00:00:07 #211 [Verbose] > Some 1i32 |> iter fn
00:00:07 #212 [Verbose] > None |> iter fn
00:00:07 #213 [Verbose] > *n
00:00:07 #214 [Verbose] > |> _equal 2i32
00:00:08 #215 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1689-8923-8c921a34b3d5/main.spi
00:00:08 #216 [Verbose] >
00:00:08 #217 [Verbose] > ╭─[ 250.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #218 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:08 #219 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #220 [Verbose] > │     let v0 : Mut0 = {l0 = 1} : Mut0                                          │
00:00:08 #221 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:08 #222 [Verbose] > │     let v2 : int32 = v1 + 1                                                  │
00:00:08 #223 [Verbose] > │     v0.l0 <- v2                                                              │
00:00:08 #224 [Verbose] > │     let v3 : int32 = v0.l0                                                   │
00:00:08 #225 [Verbose] > │     let v4 : string = $"__expect / actual: %A{v3} / expected: %A{2}"         │
00:00:08 #226 [Verbose] > │     let v5 : bool = v3 = 2                                                   │
00:00:08 #227 [Verbose] > │     let v6 : bool = v5 = false                                               │
00:00:08 #228 [Verbose] > │     if v6 then                                                               │
00:00:08 #229 [Verbose] > │         failwith<unit> v4                                                    │
00:00:08 #230 [Verbose] > │ method0()                                                                    │
00:00:08 #231 [Verbose] > │                                                                              │
00:00:08 #232 [Verbose] > │                                                                              │
00:00:08 #233 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #234 [Verbose] >
00:00:08 #235 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #236 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #237 [Verbose] > │ ## option'                                                                   │
00:00:08 #238 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #239 [Verbose] >
00:00:08 #240 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #241 [Verbose] > nominal option' t = $"`t option"
00:00:08 #242 [Verbose] >
00:00:08 #243 [Verbose] > inl unbox forall t. (x : option' t) : option t =
00:00:08 #244 [Verbose] >     inl some x : option t = Some x
00:00:08 #245 [Verbose] >     inl none : option t = None
00:00:08 #246 [Verbose] >     $"!x |> Option.map !some |> Option.defaultValue !none"
00:00:08 #247 [Verbose] >
00:00:08 #248 [Verbose] > inl box forall t. (x : option t) : option' t =
00:00:08 #249 [Verbose] >     match x with
00:00:08 #250 [Verbose] >     | Some x => $"Some !x"
00:00:08 #251 [Verbose] >     | None => $"None"
00:00:08 #252 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1714-1441-1825d1e80789/main.spi
00:00:08 #253 [Verbose] >
00:00:08 #254 [Verbose] > ╭─[ 119.49ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #255 [Verbose] > │ ()                                                                           │
00:00:08 #256 [Verbose] > │                                                                              │
00:00:08 #257 [Verbose] > │                                                                              │
00:00:08 #258 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #259 [Verbose] >
00:00:08 #260 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #261 [Verbose] > // // test
00:00:08 #262 [Verbose] >
00:00:08 #263 [Verbose] > inl x = Some 3i32
00:00:08 #264 [Verbose] > inl y : option i32 = None
00:00:08 #265 [Verbose] > inl x' = x |> box |> unbox
00:00:08 #266 [Verbose] > inl y' = y |> box |> unbox
00:00:08 #267 [Verbose] > (x', y') |> _equal (x, y)
00:00:08 #268 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1726-2644-2eda8d61cbdc/main.spi
00:00:08 #269 [Verbose] >
00:00:08 #270 [Verbose] > ╭─[ 218.12ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #271 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:08 #272 [Verbose] > │     | US0_0                                                                  │
00:00:08 #273 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:08 #274 [Verbose] > │ let rec closure0 () (v0 : int32) : US0 =                                     │
00:00:08 #275 [Verbose] > │     US0_1(v0)                                                                │
00:00:08 #276 [Verbose] > │ and method0 () : unit =                                                      │
00:00:08 #277 [Verbose] > │     let v0 : int32 option = Some 3                                           │
00:00:08 #278 [Verbose] > │     let v1 : (int32 -> US0) = closure0()                                     │
00:00:08 #279 [Verbose] > │     let v2 : US0 = US0_0                                                     │
00:00:08 #280 [Verbose] > │     let v3 : US0 = v0 |> Option.map v1 |> Option.defaultValue v2             │
00:00:08 #281 [Verbose] > │     let v4 : int32 option = None                                             │
00:00:08 #282 [Verbose] > │     let v5 : US0 = US0_0                                                     │
00:00:08 #283 [Verbose] > │     let v6 : US0 = v4 |> Option.map v1 |> Option.defaultValue v5             │
00:00:08 #284 [Verbose] > │     let v7 : US0 = US0_1(3)                                                  │
00:00:08 #285 [Verbose] > │     let v8 : US0 = US0_0                                                     │
00:00:08 #286 [Verbose] > │     let v9 : string = $"__expect / actual: %A{struct (v3, v6)} / expected:   │
00:00:08 #287 [Verbose] > │ %A{struct (v7, v8)}"                                                         │
00:00:08 #288 [Verbose] > │     let v14 : bool =                                                         │
00:00:08 #289 [Verbose] > │         match v3 with                                                        │
00:00:08 #290 [Verbose] > │         | US0_1(v12) -> (* Some *)                                           │
00:00:08 #291 [Verbose] > │             let v13 : bool = v12 = 3                                         │
00:00:08 #292 [Verbose] > │             v13                                                              │
00:00:08 #293 [Verbose] > │         | _ ->                                                               │
00:00:08 #294 [Verbose] > │             false                                                            │
00:00:08 #295 [Verbose] > │     let v16 : bool =                                                         │
00:00:08 #296 [Verbose] > │         if v14 then                                                          │
00:00:08 #297 [Verbose] > │             match v6 with                                                    │
00:00:08 #298 [Verbose] > │             | US0_0 -> (* None *)                                            │
00:00:08 #299 [Verbose] > │                 true                                                         │
00:00:08 #300 [Verbose] > │             | _ ->                                                           │
00:00:08 #301 [Verbose] > │                 false                                                        │
00:00:08 #302 [Verbose] > │         else                                                                 │
00:00:08 #303 [Verbose] > │             false                                                            │
00:00:08 #304 [Verbose] > │     let v17 : bool = v16 = false                                             │
00:00:08 #305 [Verbose] > │     if v17 then                                                              │
00:00:08 #306 [Verbose] > │         failwith<unit> v9                                                    │
00:00:08 #307 [Verbose] > │ method0()                                                                    │
00:00:08 #308 [Verbose] > │                                                                              │
00:00:08 #309 [Verbose] > │                                                                              │
00:00:08 #310 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #311 [Verbose] >
00:00:08 #312 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #313 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #314 [Verbose] > │ ## map                                                                       │
00:00:08 #315 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #316 [Verbose] >
00:00:08 #317 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #318 [Verbose] > inl map forall t u. (fn : t -> u) (x : option' t) : option' u =
00:00:08 #319 [Verbose] >     inl x = join x
00:00:08 #320 [Verbose] >     inl fn = join fn
00:00:08 #321 [Verbose] >     !\($'"!x.map(|x| !fn(x))"')
00:00:08 #322 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1748-4895-4bf37a3cde49/main.spi
00:00:08 #323 [Verbose] >
00:00:08 #324 [Verbose] > ╭─[ 139.01ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #325 [Verbose] > │ ()                                                                           │
00:00:08 #326 [Verbose] > │                                                                              │
00:00:08 #327 [Verbose] > │                                                                              │
00:00:08 #328 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #329 [Verbose] >
00:00:08 #330 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #331 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #332 [Verbose] > │ ## flatten                                                                   │
00:00:08 #333 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #334 [Verbose] >
00:00:08 #335 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #336 [Verbose] > inl flatten x =
00:00:08 #337 [Verbose] >     match x with
00:00:08 #338 [Verbose] >     | Some (Some x) => Some x
00:00:08 #339 [Verbose] >     | _ => None
00:00:08 #340 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1762-6254-60e1546afcc3/main.spi
00:00:08 #341 [Verbose] >
00:00:08 #342 [Verbose] > ╭─[ 122.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #343 [Verbose] > │ ()                                                                           │
00:00:08 #344 [Verbose] > │                                                                              │
00:00:08 #345 [Verbose] > │                                                                              │
00:00:08 #346 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #347 [Verbose] >
00:00:08 #348 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #349 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #350 [Verbose] > │ ## unwrap                                                                    │
00:00:08 #351 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #352 [Verbose] >
00:00:08 #353 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #354 [Verbose] > inl unwrap forall t. (x : option' t) : t =
00:00:08 #355 [Verbose] >     !\($'"!x.unwrap()"')
00:00:08 #356 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1774-7499-7b47303946cf/main.spi
00:00:08 #357 [Verbose] >
00:00:08 #358 [Verbose] > ╭─[ 121.16ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #359 [Verbose] > │ ()                                                                           │
00:00:08 #360 [Verbose] > │                                                                              │
00:00:08 #361 [Verbose] > │                                                                              │
00:00:08 #362 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #363 [Verbose] >
00:00:08 #364 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #365 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #366 [Verbose] > │ ## unwrap_or                                                                 │
00:00:08 #367 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #368 [Verbose] >
00:00:08 #369 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #370 [Verbose] > inl unwrap_or forall t. (def : t) (x : option' t) : t =
00:00:08 #371 [Verbose] >     !\($'"!x.unwrap_or(!def)"')
00:00:09 #372 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1787-8721-871af9d146f7/main.spi
00:00:09 #373 [Verbose] >
00:00:09 #374 [Verbose] > ╭─[ 119.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #375 [Verbose] > │ ()                                                                           │
00:00:09 #376 [Verbose] > │                                                                              │
00:00:09 #377 [Verbose] > │                                                                              │
00:00:09 #378 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #379 [Verbose] >
00:00:09 #380 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #381 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #382 [Verbose] > │ ## rc_upgrade                                                                │
00:00:09 #383 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #384 [Verbose] >
00:00:09 #385 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #386 [Verbose] > inl rc_upgrade forall t. (x : rust.weak_rc t) : option (rust.rc t) =
00:00:09 #387 [Verbose] >     inl x = join x
00:00:09 #388 [Verbose] >     !\($'"std::rc::Weak::upgrade(&!x)"')
00:00:09 #389 [Verbose] >     |> unbox
00:00:09 #390 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-1799-9928-9917c524b0ae/main.spi
00:00:09 #391 [Verbose] >
00:00:09 #392 [Verbose] > ╭─[ 218.58ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #393 [Verbose] > │ ()                                                                           │
00:00:09 #394 [Verbose] > │                                                                              │
00:00:09 #395 [Verbose] > │                                                                              │
00:00:09 #396 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #397 [Verbose] > [NbConvertApp] Converting notebook optionm'.dib.ipynb to html
00:00:09 #398 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:09 #399 [Verbose] >   validate(nb)
00:00:10 #400 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:10 #401 [Verbose] >   return _pygments_highlight(
00:00:10 #402 [Verbose] > [NbConvertApp] Writing 306369 bytes to optionm'.dib.html
00:00:10 #403 [Debug] executeAsync / exitCode: 0 / output.Length: 25731
00:00:10 #404 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 \"am'.dib\"""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ # am                                                                         │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:02 #30 [Verbose] >
00:00:02 #31 [Verbose] > prototype append t : t -> t -> t
00:00:04 #32 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2373-7303-70e6614778dd/main.spi
00:00:05 #33 [Verbose] >
00:00:05 #34 [Verbose] > ╭─[ 3.42s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #35 [Verbose] > │ ()                                                                           │
00:00:05 #36 [Verbose] > │                                                                              │
00:00:05 #37 [Verbose] > │                                                                              │
00:00:05 #38 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #39 [Verbose] >
00:00:05 #40 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #41 [Verbose] > open rust_operators
00:00:05 #42 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2591-9167-9efa03f0d690/main.spi
00:00:05 #43 [Verbose] >
00:00:05 #44 [Verbose] > ╭─[ 142.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #45 [Verbose] > │ ()                                                                           │
00:00:05 #46 [Verbose] > │                                                                              │
00:00:05 #47 [Verbose] > │                                                                              │
00:00:05 #48 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #49 [Verbose] >
00:00:05 #50 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #51 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #52 [Verbose] > │ ## append                                                                    │
00:00:05 #53 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #54 [Verbose] >
00:00:05 #55 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #56 [Verbose] > instance append a dim {int; number} t =
00:00:05 #57 [Verbose] >     am.append
00:00:05 #58 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2605-0589-07ba5195f8ce/main.spi
00:00:06 #59 [Verbose] >
00:00:06 #60 [Verbose] > ╭─[ 137.83ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #61 [Verbose] > │ ()                                                                           │
00:00:06 #62 [Verbose] > │                                                                              │
00:00:06 #63 [Verbose] > │                                                                              │
00:00:06 #64 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #65 [Verbose] >
00:00:06 #66 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #67 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #68 [Verbose] > │ ## /@                                                                        │
00:00:06 #69 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #70 [Verbose] >
00:00:06 #71 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #72 [Verbose] > inl (/@) a b =
00:00:06 #73 [Verbose] >     b |> append a
00:00:06 #74 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2620-2006-2533e8ece5b3/main.spi
00:00:06 #75 [Verbose] >
00:00:06 #76 [Verbose] > ╭─[ 138.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #77 [Verbose] > │ ()                                                                           │
00:00:06 #78 [Verbose] > │                                                                              │
00:00:06 #79 [Verbose] > │                                                                              │
00:00:06 #80 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #81 [Verbose] >
00:00:06 #82 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #83 [Verbose] > // // test
00:00:06 #84 [Verbose] >
00:00:06 #85 [Verbose] > a ;[[ "a"; "b" ]] /@ a ;[[ "c"; "d" ]]
00:00:06 #86 [Verbose] > |> _equal (a ;[[ "a"; "b"; "c"; "d" ]] : _ i32 _)
00:00:06 #87 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2633-3371-35a981d8602c/main.spi
00:00:07 #88 [Verbose] >
00:00:07 #89 [Verbose] > ╭─[ 976.20ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #90 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:07 #91 [Verbose] > │ let rec method1 (v0 : (string [])) : (string []) =                           │
00:00:07 #92 [Verbose] > │     v0                                                                       │
00:00:07 #93 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:07 #94 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:07 #95 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:07 #96 [Verbose] > │     v3                                                                       │
00:00:07 #97 [Verbose] > │ and method3 (v0 : (string []), v1 : (string []), v2 : int32) : bool =        │
00:00:07 #98 [Verbose] > │     let v3 : int32 = v0.Length                                               │
00:00:07 #99 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:00:07 #100 [Verbose] > │     if v4 then                                                               │
00:00:07 #101 [Verbose] > │         let v5 : string = v0.[int v2]                                        │
00:00:07 #102 [Verbose] > │         let v6 : string = v1.[int v2]                                        │
00:00:07 #103 [Verbose] > │         let v7 : bool = v5 = v6                                              │
00:00:07 #104 [Verbose] > │         if v7 then                                                           │
00:00:07 #105 [Verbose] > │             let v8 : int32 = v2 + 1                                          │
00:00:07 #106 [Verbose] > │             method3(v0, v1, v8)                                              │
00:00:07 #107 [Verbose] > │         else                                                                 │
00:00:07 #108 [Verbose] > │             false                                                            │
00:00:07 #109 [Verbose] > │     else                                                                     │
00:00:07 #110 [Verbose] > │         true                                                                 │
00:00:07 #111 [Verbose] > │ and method0 () : unit =                                                      │
00:00:07 #112 [Verbose] > │     let v0 : string = "a"                                                    │
00:00:07 #113 [Verbose] > │     let v1 : string = "b"                                                    │
00:00:07 #114 [Verbose] > │     let v2 : (string []) = [|v0; v1|]                                        │
00:00:07 #115 [Verbose] > │     let v3 : (string []) = method1(v2)                                       │
00:00:07 #116 [Verbose] > │     let v4 : string = "c"                                                    │
00:00:07 #117 [Verbose] > │     let v5 : string = "d"                                                    │
00:00:07 #118 [Verbose] > │     let v6 : (string []) = [|v4; v5|]                                        │
00:00:07 #119 [Verbose] > │     let v7 : (string []) = method1(v6)                                       │
00:00:07 #120 [Verbose] > │     let v8 : int32 = v3.Length                                               │
00:00:07 #121 [Verbose] > │     let v9 : int32 = v7.Length                                               │
00:00:07 #122 [Verbose] > │     let v10 : int32 = v8 + v9                                                │
00:00:07 #123 [Verbose] > │     let v11 : (string []) = Array.zeroCreate<string> (v10)                   │
00:00:07 #124 [Verbose] > │     let v12 : Mut0 = {l0 = 0} : Mut0                                         │
00:00:07 #125 [Verbose] > │     while method2(v10, v12) do                                               │
00:00:07 #126 [Verbose] > │         let v14 : int32 = v12.l0                                             │
00:00:07 #127 [Verbose] > │         let v15 : bool = v14 < v8                                            │
00:00:07 #128 [Verbose] > │         let v19 : string =                                                   │
00:00:07 #129 [Verbose] > │             if v15 then                                                      │
00:00:07 #130 [Verbose] > │                 let v16 : string = v3.[int v14]                              │
00:00:07 #131 [Verbose] > │                 v16                                                          │
00:00:07 #132 [Verbose] > │             else                                                             │
00:00:07 #133 [Verbose] > │                 let v17 : int32 = v14 - v8                                   │
00:00:07 #134 [Verbose] > │                 let v18 : string = v7.[int v17]                              │
00:00:07 #135 [Verbose] > │                 v18                                                          │
00:00:07 #136 [Verbose] > │         v11.[int v14] <- v19                                                 │
00:00:07 #137 [Verbose] > │         let v20 : int32 = v14 + 1                                            │
00:00:07 #138 [Verbose] > │         v12.l0 <- v20                                                        │
00:00:07 #139 [Verbose] > │         ()                                                                   │
00:00:07 #140 [Verbose] > │     let v21 : (string []) = [|v0; v1; v4; v5|]                               │
00:00:07 #141 [Verbose] > │     let v22 : (string []) = method1(v21)                                     │
00:00:07 #142 [Verbose] > │     let v23 : string = $"__expect / actual: %A{v11} / expected: %A{v22}"     │
00:00:07 #143 [Verbose] > │     let v24 : int32 = v11.Length                                             │
00:00:07 #144 [Verbose] > │     let v25 : int32 = v22.Length                                             │
00:00:07 #145 [Verbose] > │     let v26 : bool = v24 = v25                                               │
00:00:07 #146 [Verbose] > │     let v27 : bool = v26 <> true                                             │
00:00:07 #147 [Verbose] > │     let v30 : bool =                                                         │
00:00:07 #148 [Verbose] > │         if v27 then                                                          │
00:00:07 #149 [Verbose] > │             false                                                            │
00:00:07 #150 [Verbose] > │         else                                                                 │
00:00:07 #151 [Verbose] > │             let v28 : int32 = 0                                              │
00:00:07 #152 [Verbose] > │             method3(v11, v22, v28)                                           │
00:00:07 #153 [Verbose] > │     let v31 : bool = v30 = false                                             │
00:00:07 #154 [Verbose] > │     if v31 then                                                              │
00:00:07 #155 [Verbose] > │         failwith<unit> v23                                                   │
00:00:07 #156 [Verbose] > │ method0()                                                                    │
00:00:07 #157 [Verbose] > │                                                                              │
00:00:07 #158 [Verbose] > │                                                                              │
00:00:07 #159 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #160 [Verbose] >
00:00:07 #161 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #162 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #163 [Verbose] > │ ## collect                                                                   │
00:00:07 #164 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #165 [Verbose] >
00:00:07 #166 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #167 [Verbose] > inl collect forall t r. (fn : t -> a i32 r) (items : a i32 t) : a i32 r =
00:00:07 #168 [Verbose] >     items
00:00:07 #169 [Verbose] >     |> am.map fn
00:00:07 #170 [Verbose] >     |> am.fold (/@) (a ;[[]])
00:00:07 #171 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2732-3234-3f3010a49071/main.spi
00:00:07 #172 [Verbose] >
00:00:07 #173 [Verbose] > ╭─[ 130.16ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #174 [Verbose] > │ ()                                                                           │
00:00:07 #175 [Verbose] > │                                                                              │
00:00:07 #176 [Verbose] > │                                                                              │
00:00:07 #177 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #178 [Verbose] >
00:00:07 #179 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #180 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #181 [Verbose] > │ ## choose                                                                    │
00:00:07 #182 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #183 [Verbose] >
00:00:07 #184 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #185 [Verbose] > inl choose f l =
00:00:07 #186 [Verbose] >     (l, [[]])
00:00:07 #187 [Verbose] >     ||> am.foldBack fun x acc =>
00:00:07 #188 [Verbose] >         match f x with
00:00:07 #189 [Verbose] >         | Some y => y :: acc
00:00:07 #190 [Verbose] >         | None => acc
00:00:07 #191 [Verbose] >     |> listm.toArray
00:00:07 #192 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2745-4508-4105d21fc242/main.spi
00:00:07 #193 [Verbose] >
00:00:07 #194 [Verbose] > ╭─[ 120.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #195 [Verbose] > │ ()                                                                           │
00:00:07 #196 [Verbose] > │                                                                              │
00:00:07 #197 [Verbose] > │                                                                              │
00:00:07 #198 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #199 [Verbose] >
00:00:07 #200 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #201 [Verbose] > // // test
00:00:07 #202 [Verbose] >
00:00:07 #203 [Verbose] > (am.init 10i32 id : a _ _)
00:00:07 #204 [Verbose] > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:00:07 #205 [Verbose] > |> _equal (a ;[[ 0; 2; 4; 6; 8 ]] : _ i32 _)
00:00:07 #206 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2757-5725-5a08bbde3cd9/main.spi
00:00:07 #207 [Verbose] >
00:00:07 #208 [Verbose] > ╭─[ 498.83ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #209 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:07 #210 [Verbose] > │ and UH0 =                                                                    │
00:00:07 #211 [Verbose] > │     | UH0_0 of int32 * UH0                                                   │
00:00:07 #212 [Verbose] > │     | UH0_1                                                                  │
00:00:07 #213 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : UH0}                            │
00:00:07 #214 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:07 #215 [Verbose] > │     | US0_0                                                                  │
00:00:07 #216 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:07 #217 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:07 #218 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:07 #219 [Verbose] > │     let v2 : bool = v1 < 10                                                  │
00:00:07 #220 [Verbose] > │     v2                                                                       │
00:00:07 #221 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool =                                 │
00:00:07 #222 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:07 #223 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:07 #224 [Verbose] > │     v3                                                                       │
00:00:07 #225 [Verbose] > │ and method4 (v0 : UH0, v1 : int32) : int32 =                                 │
00:00:07 #226 [Verbose] > │     match v0 with                                                            │
00:00:07 #227 [Verbose] > │     | UH0_0(v2, v3) -> (* Cons *)                                            │
00:00:07 #228 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:07 #229 [Verbose] > │         method4(v3, v4)                                                      │
00:00:07 #230 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:07 #231 [Verbose] > │         v1                                                                   │
00:00:07 #232 [Verbose] > │ and method5 (v0 : (int32 []), v1 : UH0, v2 : int32) : int32 =                │
00:00:07 #233 [Verbose] > │     match v1 with                                                            │
00:00:07 #234 [Verbose] > │     | UH0_0(v3, v4) -> (* Cons *)                                            │
00:00:07 #235 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:07 #236 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:07 #237 [Verbose] > │         method5(v0, v4, v5)                                                  │
00:00:07 #238 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:07 #239 [Verbose] > │         v2                                                                   │
00:00:07 #240 [Verbose] > │ and method3 (v0 : UH0) : (int32 []) =                                        │
00:00:07 #241 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:07 #242 [Verbose] > │     let v2 : int32 = method4(v0, v1)                                         │
00:00:07 #243 [Verbose] > │     let v3 : (int32 []) = Array.zeroCreate<int32> (v2)                       │
00:00:07 #244 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:07 #245 [Verbose] > │     let v5 : int32 = method5(v3, v0, v4)                                     │
00:00:07 #246 [Verbose] > │     v3                                                                       │
00:00:07 #247 [Verbose] > │ and method6 (v0 : (int32 [])) : (int32 []) =                                 │
00:00:07 #248 [Verbose] > │     v0                                                                       │
00:00:07 #249 [Verbose] > │ and method7 (v0 : (int32 []), v1 : (int32 []), v2 : int32) : bool =          │
00:00:07 #250 [Verbose] > │     let v3 : int32 = v0.Length                                               │
00:00:07 #251 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:00:07 #252 [Verbose] > │     if v4 then                                                               │
00:00:07 #253 [Verbose] > │         let v5 : int32 = v0.[int v2]                                         │
00:00:07 #254 [Verbose] > │         let v6 : int32 = v1.[int v2]                                         │
00:00:07 #255 [Verbose] > │         let v7 : bool = v5 = v6                                              │
00:00:07 #256 [Verbose] > │         if v7 then                                                           │
00:00:07 #257 [Verbose] > │             let v8 : int32 = v2 + 1                                          │
00:00:07 #258 [Verbose] > │             method7(v0, v1, v8)                                              │
00:00:07 #259 [Verbose] > │         else                                                                 │
00:00:07 #260 [Verbose] > │             false                                                            │
00:00:07 #261 [Verbose] > │     else                                                                     │
00:00:07 #262 [Verbose] > │         true                                                                 │
00:00:07 #263 [Verbose] > │ and method0 () : unit =                                                      │
00:00:07 #264 [Verbose] > │     let v0 : (int32 []) = Array.zeroCreate<int32> (10)                       │
00:00:07 #265 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:07 #266 [Verbose] > │     while method1(v1) do                                                     │
00:00:07 #267 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:07 #268 [Verbose] > │         v0.[int v3] <- v3                                                    │
00:00:07 #269 [Verbose] > │         let v4 : int32 = v3 + 1                                              │
00:00:07 #270 [Verbose] > │         v1.l0 <- v4                                                          │
00:00:07 #271 [Verbose] > │         ()                                                                   │
00:00:07 #272 [Verbose] > │     let v5 : int32 = v0.Length                                               │
00:00:07 #273 [Verbose] > │     let v6 : UH0 = UH0_1                                                     │
00:00:07 #274 [Verbose] > │     let v7 : Mut1 = {l0 = 0; l1 = v6} : Mut1                                 │
00:00:07 #275 [Verbose] > │     while method2(v5, v7) do                                                 │
00:00:07 #276 [Verbose] > │         let v9 : int32 = v7.l0                                               │
00:00:07 #277 [Verbose] > │         let v10 : int32 =  -v9                                               │
00:00:07 #278 [Verbose] > │         let v11 : int32 = v10 + v5                                           │
00:00:07 #279 [Verbose] > │         let v12 : int32 = v11 - 1                                            │
00:00:07 #280 [Verbose] > │         let v13 : UH0 = v7.l1                                                │
00:00:07 #281 [Verbose] > │         let v14 : int32 = v0.[int v12]                                       │
00:00:07 #282 [Verbose] > │         let v15 : int32 = v14 % 2                                            │
00:00:07 #283 [Verbose] > │         let v16 : bool = v15 = 0                                             │
00:00:07 #284 [Verbose] > │         let v19 : US0 =                                                      │
00:00:07 #285 [Verbose] > │             if v16 then                                                      │
00:00:07 #286 [Verbose] > │                 US0_1(v14)                                                   │
00:00:07 #287 [Verbose] > │             else                                                             │
00:00:07 #288 [Verbose] > │                 US0_0                                                        │
00:00:07 #289 [Verbose] > │         let v23 : UH0 =                                                      │
00:00:07 #290 [Verbose] > │             match v19 with                                                   │
00:00:07 #291 [Verbose] > │             | US0_0 -> (* None *)                                            │
00:00:07 #292 [Verbose] > │                 v13                                                          │
00:00:07 #293 [Verbose] > │             | US0_1(v20) -> (* Some *)                                       │
00:00:07 #294 [Verbose] > │                 UH0_0(v20, v13)                                              │
00:00:07 #295 [Verbose] > │         let v24 : int32 = v9 + 1                                             │
00:00:07 #296 [Verbose] > │         v7.l0 <- v24                                                         │
00:00:07 #297 [Verbose] > │         v7.l1 <- v23                                                         │
00:00:07 #298 [Verbose] > │         ()                                                                   │
00:00:07 #299 [Verbose] > │     let v25 : UH0 = v7.l1                                                    │
00:00:07 #300 [Verbose] > │     let v26 : (int32 []) = method3(v25)                                      │
00:00:07 #301 [Verbose] > │     let v27 : (int32 []) = [|0; 2; 4; 6; 8|]                                 │
00:00:07 #302 [Verbose] > │     let v28 : (int32 []) = method6(v27)                                      │
00:00:07 #303 [Verbose] > │     let v29 : string = $"__expect / actual: %A{v26} / expected: %A{v28}"     │
00:00:07 #304 [Verbose] > │     let v30 : int32 = v26.Length                                             │
00:00:07 #305 [Verbose] > │     let v31 : int32 = v28.Length                                             │
00:00:07 #306 [Verbose] > │     let v32 : bool = v30 = v31                                               │
00:00:07 #307 [Verbose] > │     let v33 : bool = v32 <> true                                             │
00:00:07 #308 [Verbose] > │     let v36 : bool =                                                         │
00:00:07 #309 [Verbose] > │         if v33 then                                                          │
00:00:07 #310 [Verbose] > │             false                                                            │
00:00:07 #311 [Verbose] > │         else                                                                 │
00:00:07 #312 [Verbose] > │             let v34 : int32 = 0                                              │
00:00:07 #313 [Verbose] > │             method7(v26, v28, v34)                                           │
00:00:07 #314 [Verbose] > │     let v37 : bool = v36 = false                                             │
00:00:07 #315 [Verbose] > │     if v37 then                                                              │
00:00:07 #316 [Verbose] > │         failwith<unit> v29                                                   │
00:00:07 #317 [Verbose] > │ method0()                                                                    │
00:00:07 #318 [Verbose] > │                                                                              │
00:00:07 #319 [Verbose] > │                                                                              │
00:00:07 #320 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #321 [Verbose] >
00:00:07 #322 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #323 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #324 [Verbose] > │ ## sum                                                                       │
00:00:07 #325 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #326 [Verbose] >
00:00:07 #327 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #328 [Verbose] > inl sum (a' : a _ _) =
00:00:07 #329 [Verbose] >     a' |> am.fold (+) 0
00:00:08 #330 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2808-0844-08edbf0d7d42/main.spi
00:00:08 #331 [Verbose] >
00:00:08 #332 [Verbose] > ╭─[ 140.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #333 [Verbose] > │ ()                                                                           │
00:00:08 #334 [Verbose] > │                                                                              │
00:00:08 #335 [Verbose] > │                                                                              │
00:00:08 #336 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #337 [Verbose] >
00:00:08 #338 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #339 [Verbose] > // // test
00:00:08 #340 [Verbose] >
00:00:08 #341 [Verbose] > am.init 10i32 id
00:00:08 #342 [Verbose] > |> sum
00:00:08 #343 [Verbose] > |> _equal 45
00:00:08 #344 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2822-2244-2866189a2af5/main.spi
00:00:08 #345 [Verbose] >
00:00:08 #346 [Verbose] > ╭─[ 196.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #347 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:08 #348 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : int32}                          │
00:00:08 #349 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:08 #350 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:08 #351 [Verbose] > │     let v2 : bool = v1 < 10                                                  │
00:00:08 #352 [Verbose] > │     v2                                                                       │
00:00:08 #353 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool =                                 │
00:00:08 #354 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:08 #355 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:08 #356 [Verbose] > │     v3                                                                       │
00:00:08 #357 [Verbose] > │ and method0 () : unit =                                                      │
00:00:08 #358 [Verbose] > │     let v0 : (int32 []) = Array.zeroCreate<int32> (10)                       │
00:00:08 #359 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:08 #360 [Verbose] > │     while method1(v1) do                                                     │
00:00:08 #361 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:08 #362 [Verbose] > │         v0.[int v3] <- v3                                                    │
00:00:08 #363 [Verbose] > │         let v4 : int32 = v3 + 1                                              │
00:00:08 #364 [Verbose] > │         v1.l0 <- v4                                                          │
00:00:08 #365 [Verbose] > │         ()                                                                   │
00:00:08 #366 [Verbose] > │     let v5 : int32 = v0.Length                                               │
00:00:08 #367 [Verbose] > │     let v6 : Mut1 = {l0 = 0; l1 = 0} : Mut1                                  │
00:00:08 #368 [Verbose] > │     while method2(v5, v6) do                                                 │
00:00:08 #369 [Verbose] > │         let v8 : int32 = v6.l0                                               │
00:00:08 #370 [Verbose] > │         let v9 : int32 = v6.l1                                               │
00:00:08 #371 [Verbose] > │         let v10 : int32 = v0.[int v8]                                        │
00:00:08 #372 [Verbose] > │         let v11 : int32 = v9 + v10                                           │
00:00:08 #373 [Verbose] > │         let v12 : int32 = v8 + 1                                             │
00:00:08 #374 [Verbose] > │         v6.l0 <- v12                                                         │
00:00:08 #375 [Verbose] > │         v6.l1 <- v11                                                         │
00:00:08 #376 [Verbose] > │         ()                                                                   │
00:00:08 #377 [Verbose] > │     let v13 : int32 = v6.l1                                                  │
00:00:08 #378 [Verbose] > │     let v14 : string = $"__expect / actual: %A{v13} / expected: %A{45}"      │
00:00:08 #379 [Verbose] > │     let v15 : bool = v13 = 45                                                │
00:00:08 #380 [Verbose] > │     let v16 : bool = v15 = false                                             │
00:00:08 #381 [Verbose] > │     if v16 then                                                              │
00:00:08 #382 [Verbose] > │         failwith<unit> v14                                                   │
00:00:08 #383 [Verbose] > │ method0()                                                                    │
00:00:08 #384 [Verbose] > │                                                                              │
00:00:08 #385 [Verbose] > │                                                                              │
00:00:08 #386 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #387 [Verbose] >
00:00:08 #388 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #389 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #390 [Verbose] > │ ## init_series                                                               │
00:00:08 #391 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #392 [Verbose] >
00:00:08 #393 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #394 [Verbose] > inl init_series start end inc =
00:00:08 #395 [Verbose] >     inl total = conv ((end - start) / inc) + 1
00:00:08 #396 [Verbose] >     am.init total (conv >> (*) inc >> (+) start) : a i32 _
00:00:08 #397 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2842-4246-4ccafa3795f7/main.spi
00:00:08 #398 [Verbose] >
00:00:08 #399 [Verbose] > ╭─[ 135.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #400 [Verbose] > │ ()                                                                           │
00:00:08 #401 [Verbose] > │                                                                              │
00:00:08 #402 [Verbose] > │                                                                              │
00:00:08 #403 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #404 [Verbose] >
00:00:08 #405 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #406 [Verbose] > // // test
00:00:08 #407 [Verbose] >
00:00:08 #408 [Verbose] > init_series 0 1 0.5
00:00:08 #409 [Verbose] > |> _equal (a ;[[0f64; 0.5; 1]])
00:00:08 #410 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2856-5601-51a59eb38b53/main.spi
00:00:08 #411 [Verbose] >
00:00:08 #412 [Verbose] > ╭─[ 179.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #413 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:08 #414 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:08 #415 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:08 #416 [Verbose] > │     let v2 : bool = v1 < 3                                                   │
00:00:08 #417 [Verbose] > │     v2                                                                       │
00:00:08 #418 [Verbose] > │ and method2 (v0 : (float [])) : (float []) =                                 │
00:00:08 #419 [Verbose] > │     v0                                                                       │
00:00:08 #420 [Verbose] > │ and method3 (v0 : (float []), v1 : (float []), v2 : int32) : bool =          │
00:00:08 #421 [Verbose] > │     let v3 : int32 = v0.Length                                               │
00:00:08 #422 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:00:08 #423 [Verbose] > │     if v4 then                                                               │
00:00:08 #424 [Verbose] > │         let v5 : float = v0.[int v2]                                         │
00:00:08 #425 [Verbose] > │         let v6 : float = v1.[int v2]                                         │
00:00:08 #426 [Verbose] > │         let v7 : bool = v5 = v6                                              │
00:00:08 #427 [Verbose] > │         if v7 then                                                           │
00:00:08 #428 [Verbose] > │             let v8 : int32 = v2 + 1                                          │
00:00:08 #429 [Verbose] > │             method3(v0, v1, v8)                                              │
00:00:08 #430 [Verbose] > │         else                                                                 │
00:00:08 #431 [Verbose] > │             false                                                            │
00:00:08 #432 [Verbose] > │     else                                                                     │
00:00:08 #433 [Verbose] > │         true                                                                 │
00:00:08 #434 [Verbose] > │ and method0 () : unit =                                                      │
00:00:08 #435 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (3)                        │
00:00:08 #436 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:08 #437 [Verbose] > │     while method1(v1) do                                                     │
00:00:08 #438 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:08 #439 [Verbose] > │         let v4 : float = float v3                                            │
00:00:08 #440 [Verbose] > │         let v5 : float = 0.5 * v4                                            │
00:00:08 #441 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:08 #442 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:08 #443 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:08 #444 [Verbose] > │         ()                                                                   │
00:00:08 #445 [Verbose] > │     let v7 : (float []) = [|0.0; 0.5; 1.0|]                                  │
00:00:08 #446 [Verbose] > │     let v8 : (float []) = method2(v7)                                        │
00:00:08 #447 [Verbose] > │     let v9 : string = $"__expect / actual: %A{v0} / expected: %A{v8}"        │
00:00:08 #448 [Verbose] > │     let v10 : int32 = v0.Length                                              │
00:00:08 #449 [Verbose] > │     let v11 : int32 = v8.Length                                              │
00:00:08 #450 [Verbose] > │     let v12 : bool = v10 = v11                                               │
00:00:08 #451 [Verbose] > │     let v13 : bool = v12 <> true                                             │
00:00:08 #452 [Verbose] > │     let v16 : bool =                                                         │
00:00:08 #453 [Verbose] > │         if v13 then                                                          │
00:00:08 #454 [Verbose] > │             false                                                            │
00:00:08 #455 [Verbose] > │         else                                                                 │
00:00:08 #456 [Verbose] > │             let v14 : int32 = 0                                              │
00:00:08 #457 [Verbose] > │             method3(v0, v8, v14)                                             │
00:00:08 #458 [Verbose] > │     let v17 : bool = v16 = false                                             │
00:00:08 #459 [Verbose] > │     if v17 then                                                              │
00:00:08 #460 [Verbose] > │         failwith<unit> v9                                                    │
00:00:08 #461 [Verbose] > │ method0()                                                                    │
00:00:08 #462 [Verbose] > │                                                                              │
00:00:08 #463 [Verbose] > │                                                                              │
00:00:08 #464 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #465 [Verbose] >
00:00:08 #466 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #467 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #468 [Verbose] > │ ## head                                                                      │
00:00:08 #469 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #470 [Verbose] >
00:00:08 #471 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #472 [Verbose] > inl head (ar : a _ _) =
00:00:08 #473 [Verbose] >     if var_is ar || length ar > 0
00:00:08 #474 [Verbose] >     then index ar 0
00:00:08 #475 [Verbose] >     else error_type "The length of the array should be greater than 0."
00:00:08 #476 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2874-7445-7e78a66954e0/main.spi
00:00:08 #477 [Verbose] >
00:00:08 #478 [Verbose] > ╭─[ 122.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #479 [Verbose] > │ ()                                                                           │
00:00:08 #480 [Verbose] > │                                                                              │
00:00:08 #481 [Verbose] > │                                                                              │
00:00:08 #482 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #483 [Verbose] >
00:00:08 #484 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #485 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #486 [Verbose] > │ ## last                                                                      │
00:00:08 #487 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #488 [Verbose] >
00:00:08 #489 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #490 [Verbose] > inl last (ar : a _ _) =
00:00:08 #491 [Verbose] >     inl len = length ar
00:00:08 #492 [Verbose] >     if var_is ar || len > 0
00:00:08 #493 [Verbose] >     then index ar (len - 1)
00:00:08 #494 [Verbose] >     else error_type "The length of the array should be greater than 0."
00:00:08 #495 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2886-8682-8ee6f2c09b29/main.spi
00:00:08 #496 [Verbose] >
00:00:08 #497 [Verbose] > ╭─[ 114.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #498 [Verbose] > │ ()                                                                           │
00:00:08 #499 [Verbose] > │                                                                              │
00:00:08 #500 [Verbose] > │                                                                              │
00:00:08 #501 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #502 [Verbose] >
00:00:08 #503 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #504 [Verbose] > // // test
00:00:08 #505 [Verbose] >
00:00:08 #506 [Verbose] > am.init 10i32 id
00:00:08 #507 [Verbose] > |> last
00:00:08 #508 [Verbose] > |> _equal 9
00:00:08 #509 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2898-9832-9a72a19b6822/main.spi
00:00:08 #510 [Verbose] >
00:00:08 #511 [Verbose] > ╭─[ 142.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #512 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:08 #513 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:08 #514 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:08 #515 [Verbose] > │     let v2 : bool = v1 < 10                                                  │
00:00:08 #516 [Verbose] > │     v2                                                                       │
00:00:08 #517 [Verbose] > │ and method0 () : unit =                                                      │
00:00:08 #518 [Verbose] > │     let v0 : (int32 []) = Array.zeroCreate<int32> (10)                       │
00:00:08 #519 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:08 #520 [Verbose] > │     while method1(v1) do                                                     │
00:00:08 #521 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:08 #522 [Verbose] > │         v0.[int v3] <- v3                                                    │
00:00:08 #523 [Verbose] > │         let v4 : int32 = v3 + 1                                              │
00:00:08 #524 [Verbose] > │         v1.l0 <- v4                                                          │
00:00:08 #525 [Verbose] > │         ()                                                                   │
00:00:08 #526 [Verbose] > │     let v5 : int32 = v0.Length                                               │
00:00:08 #527 [Verbose] > │     let v6 : int32 = v5 - 1                                                  │
00:00:08 #528 [Verbose] > │     let v7 : int32 = v0.[int v6]                                             │
00:00:08 #529 [Verbose] > │     let v8 : string = $"__expect / actual: %A{v7} / expected: %A{9}"         │
00:00:08 #530 [Verbose] > │     let v9 : bool = v7 = 9                                                   │
00:00:08 #531 [Verbose] > │     let v10 : bool = v9 = false                                              │
00:00:08 #532 [Verbose] > │     if v10 then                                                              │
00:00:08 #533 [Verbose] > │         failwith<unit> v8                                                    │
00:00:08 #534 [Verbose] > │ method0()                                                                    │
00:00:08 #535 [Verbose] > │                                                                              │
00:00:08 #536 [Verbose] > │                                                                              │
00:00:08 #537 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #538 [Verbose] >
00:00:08 #539 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #540 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #541 [Verbose] > │ ## try_pick                                                                  │
00:00:08 #542 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #543 [Verbose] >
00:00:08 #544 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #545 [Verbose] > inl try_pick forall t u. (fn : t -> option u) (array : a _ t) : option u =
00:00:08 #546 [Verbose] >     (array, None)
00:00:08 #547 [Verbose] >     ||> am.foldBack fun x acc =>
00:00:08 #548 [Verbose] >         match acc with
00:00:08 #549 [Verbose] >         | Some _ => acc
00:00:08 #550 [Verbose] >         | None => x |> fn
00:00:09 #551 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2913-1332-1366fcac6ef8/main.spi
00:00:09 #552 [Verbose] >
00:00:09 #553 [Verbose] > ╭─[ 130.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #554 [Verbose] > │ ()                                                                           │
00:00:09 #555 [Verbose] > │                                                                              │
00:00:09 #556 [Verbose] > │                                                                              │
00:00:09 #557 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #558 [Verbose] >
00:00:09 #559 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #560 [Verbose] > // // test
00:00:09 #561 [Verbose] >
00:00:09 #562 [Verbose] > am.init 10i32 id
00:00:09 #563 [Verbose] > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:00:09 #564 [Verbose] > |> _equal (Some 5i32)
00:00:09 #565 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2926-2604-2941c6aa5326/main.spi
00:00:09 #566 [Verbose] >
00:00:09 #567 [Verbose] > ╭─[ 183.49ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #568 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:09 #569 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:09 #570 [Verbose] > │     | US0_0                                                                  │
00:00:09 #571 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:09 #572 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : US0}                            │
00:00:09 #573 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:09 #574 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:09 #575 [Verbose] > │     let v2 : bool = v1 < 10                                                  │
00:00:09 #576 [Verbose] > │     v2                                                                       │
00:00:09 #577 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool =                                 │
00:00:09 #578 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:09 #579 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:09 #580 [Verbose] > │     v3                                                                       │
00:00:09 #581 [Verbose] > │ and method0 () : unit =                                                      │
00:00:09 #582 [Verbose] > │     let v0 : (int32 []) = Array.zeroCreate<int32> (10)                       │
00:00:09 #583 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:09 #584 [Verbose] > │     while method1(v1) do                                                     │
00:00:09 #585 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:09 #586 [Verbose] > │         v0.[int v3] <- v3                                                    │
00:00:09 #587 [Verbose] > │         let v4 : int32 = v3 + 1                                              │
00:00:09 #588 [Verbose] > │         v1.l0 <- v4                                                          │
00:00:09 #589 [Verbose] > │         ()                                                                   │
00:00:09 #590 [Verbose] > │     let v5 : int32 = v0.Length                                               │
00:00:09 #591 [Verbose] > │     let v6 : US0 = US0_0                                                     │
00:00:09 #592 [Verbose] > │     let v7 : Mut1 = {l0 = 0; l1 = v6} : Mut1                                 │
00:00:09 #593 [Verbose] > │     while method2(v5, v7) do                                                 │
00:00:09 #594 [Verbose] > │         let v9 : int32 = v7.l0                                               │
00:00:09 #595 [Verbose] > │         let v10 : int32 =  -v9                                               │
00:00:09 #596 [Verbose] > │         let v11 : int32 = v10 + v5                                           │
00:00:09 #597 [Verbose] > │         let v12 : int32 = v11 - 1                                            │
00:00:09 #598 [Verbose] > │         let v13 : US0 = v7.l1                                                │
00:00:09 #599 [Verbose] > │         let v14 : int32 = v0.[int v12]                                       │
00:00:09 #600 [Verbose] > │         let v21 : US0 =                                                      │
00:00:09 #601 [Verbose] > │             match v13 with                                                   │
00:00:09 #602 [Verbose] > │             | US0_0 -> (* None *)                                            │
00:00:09 #603 [Verbose] > │                 let v16 : bool = v14 = 5                                     │
00:00:09 #604 [Verbose] > │                 if v16 then                                                  │
00:00:09 #605 [Verbose] > │                     US0_1(v14)                                               │
00:00:09 #606 [Verbose] > │                 else                                                         │
00:00:09 #607 [Verbose] > │                     US0_0                                                    │
00:00:09 #608 [Verbose] > │             | US0_1(v15) -> (* Some *)                                       │
00:00:09 #609 [Verbose] > │                 v13                                                          │
00:00:09 #610 [Verbose] > │         let v22 : int32 = v9 + 1                                             │
00:00:09 #611 [Verbose] > │         v7.l0 <- v22                                                         │
00:00:09 #612 [Verbose] > │         v7.l1 <- v21                                                         │
00:00:09 #613 [Verbose] > │         ()                                                                   │
00:00:09 #614 [Verbose] > │     let v23 : US0 = v7.l1                                                    │
00:00:09 #615 [Verbose] > │     let v24 : US0 = US0_1(5)                                                 │
00:00:09 #616 [Verbose] > │     let v25 : string = $"__expect / actual: %A{v23} / expected: %A{v24}"     │
00:00:09 #617 [Verbose] > │     let v29 : bool =                                                         │
00:00:09 #618 [Verbose] > │         match v23 with                                                       │
00:00:09 #619 [Verbose] > │         | US0_1(v27) -> (* Some *)                                           │
00:00:09 #620 [Verbose] > │             let v28 : bool = v27 = 5                                         │
00:00:09 #621 [Verbose] > │             v28                                                              │
00:00:09 #622 [Verbose] > │         | _ ->                                                               │
00:00:09 #623 [Verbose] > │             false                                                            │
00:00:09 #624 [Verbose] > │     let v30 : bool = v29 = false                                             │
00:00:09 #625 [Verbose] > │     if v30 then                                                              │
00:00:09 #626 [Verbose] > │         failwith<unit> v25                                                   │
00:00:09 #627 [Verbose] > │ method0()                                                                    │
00:00:09 #628 [Verbose] > │                                                                              │
00:00:09 #629 [Verbose] > │                                                                              │
00:00:09 #630 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #631 [Verbose] >
00:00:09 #632 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #633 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #634 [Verbose] > │ ## from_vec                                                                  │
00:00:09 #635 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #636 [Verbose] >
00:00:09 #637 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #638 [Verbose] > inl from_vec forall dim el. (vec : rust.vec el) : a dim el =
00:00:09 #639 [Verbose] >     inl vec = join vec
00:00:09 #640 [Verbose] >     !\($'"fable_library_rust::NativeArray_::array_from(!vec)"')
00:00:09 #641 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2944-4488-48208c84b1dd/main.spi
00:00:09 #642 [Verbose] >
00:00:09 #643 [Verbose] > ╭─[ 131.24ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #644 [Verbose] > │ ()                                                                           │
00:00:09 #645 [Verbose] > │                                                                              │
00:00:09 #646 [Verbose] > │                                                                              │
00:00:09 #647 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #648 [Verbose] >
00:00:09 #649 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #650 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #651 [Verbose] > │ ## to_vec                                                                    │
00:00:09 #652 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #653 [Verbose] >
00:00:09 #654 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #655 [Verbose] > inl to_vec forall t. (ar : array_base t) : rust.vec t =
00:00:09 #656 [Verbose] >     inl ar = join ar
00:00:09 #657 [Verbose] >     !\($'"!ar.to_vec()"')
00:00:09 #658 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2958-5811-52443ae9c9d7/main.spi
00:00:09 #659 [Verbose] >
00:00:09 #660 [Verbose] > ╭─[ 129.92ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #661 [Verbose] > │ ()                                                                           │
00:00:09 #662 [Verbose] > │                                                                              │
00:00:09 #663 [Verbose] > │                                                                              │
00:00:09 #664 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #665 [Verbose] >
00:00:09 #666 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #667 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #668 [Verbose] > │ ## map_vec                                                                   │
00:00:09 #669 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #670 [Verbose] >
00:00:09 #671 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #672 [Verbose] > inl map_vec forall dim t u. (fn : t -> u) (ar : a dim t) : a dim u =
00:00:09 #673 [Verbose] >     inl fn = join fn
00:00:09 #674 [Verbose] >     inl (a ar) = ar
00:00:09 #675 [Verbose] >     inl ar = ar |> to_vec
00:00:09 #676 [Verbose] >     !\($'"!ar.iter().map(|x| !fn(x.clone())).collect()"')
00:00:09 #677 [Verbose] >     |> from_vec
00:00:09 #678 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2971-7121-7686b0fe1e98/main.spi
00:00:09 #679 [Verbose] >
00:00:09 #680 [Verbose] > ╭─[ 118.80ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #681 [Verbose] > │ ()                                                                           │
00:00:09 #682 [Verbose] > │                                                                              │
00:00:09 #683 [Verbose] > │                                                                              │
00:00:09 #684 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #685 [Verbose] >
00:00:09 #686 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #687 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #688 [Verbose] > │ ## map_base                                                                  │
00:00:09 #689 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #690 [Verbose] >
00:00:09 #691 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #692 [Verbose] > inl map_base forall t u. (fn : t -> u) (x : array_base t) : array_base u =
00:00:09 #693 [Verbose] >     a x
00:00:09 #694 [Verbose] >     |> am.map fn
00:00:09 #695 [Verbose] >     |> fun (a x : _ i64 _) => x
00:00:09 #696 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2983-8322-81ea48831a98/main.spi
00:00:09 #697 [Verbose] >
00:00:09 #698 [Verbose] > ╭─[ 115.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #699 [Verbose] > │ ()                                                                           │
00:00:09 #700 [Verbose] > │                                                                              │
00:00:09 #701 [Verbose] > │                                                                              │
00:00:09 #702 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #703 [Verbose] >
00:00:09 #704 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #705 [Verbose] > inl average forall el {number}. (array : a _ el) : el =
00:00:09 #706 [Verbose] >     $"!array |> Array.average"
00:00:09 #707 [Verbose] >
00:00:09 #708 [Verbose] > inl length forall dim el {number}. (array : a dim el) : dim =
00:00:09 #709 [Verbose] >     $"!array |> Array.length"
00:00:09 #710 [Verbose] >
00:00:09 #711 [Verbose] > inl parallel_map forall dim el el'. (fn : el -> el') (array : a dim el) : a dim
00:00:09 #712 [Verbose] > el' =
00:00:09 #713 [Verbose] >     $"!array |> Array.Parallel.map !fn"
00:00:09 #714 [Verbose] >
00:00:09 #715 [Verbose] > inl sort_by forall dim el. (fn : el -> _) (array : a dim el) : a dim el =
00:00:09 #716 [Verbose] >     $"!array |> Array.sortBy !fn"
00:00:09 #717 [Verbose] >
00:00:09 #718 [Verbose] > inl sort_descending forall dim el. (array : a dim el) : a dim el =
00:00:09 #719 [Verbose] >     $"!array |> Array.sortDescending"
00:00:09 #720 [Verbose] >
00:00:09 #721 [Verbose] > inl transpose forall dim el. (array : a dim (a dim el)) : a dim (a dim el) =
00:00:09 #722 [Verbose] >     $"!array |> Array.transpose"
00:00:09 #723 [Verbose] >
00:00:09 #724 [Verbose] > inl try_item forall dim el. (i : i32) (array : a dim el) : option el =
00:00:09 #725 [Verbose] >     $"!array |> Array.tryItem !i" |> optionm'.unbox
00:00:09 #726 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-2994-9492-97dd37b050a0/main.spi
00:00:09 #727 [Verbose] >
00:00:09 #728 [Verbose] > ╭─[ 118.89ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #729 [Verbose] > │ ()                                                                           │
00:00:09 #730 [Verbose] > │                                                                              │
00:00:09 #731 [Verbose] > │                                                                              │
00:00:09 #732 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #733 [Verbose] >
00:00:09 #734 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #735 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #736 [Verbose] > │ ## indexed                                                                   │
00:00:09 #737 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #738 [Verbose] >
00:00:09 #739 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #740 [Verbose] > inl indexed (array : a _ _) =
00:00:09 #741 [Verbose] >     (([[]], 0), array)
00:00:09 #742 [Verbose] >     ||> am.fold fun (acc, i) x =>
00:00:09 #743 [Verbose] >         (i, x) :: acc, i + 1
00:00:09 #744 [Verbose] >     |> fst
00:00:09 #745 [Verbose] >     |> listm.rev
00:00:09 #746 [Verbose] >     |> listm.toArray
00:00:09 #747 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3006-0678-06860c4dac9b/main.spi
00:00:10 #748 [Verbose] >
00:00:10 #749 [Verbose] > ╭─[ 119.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #750 [Verbose] > │ ()                                                                           │
00:00:10 #751 [Verbose] > │                                                                              │
00:00:10 #752 [Verbose] > │                                                                              │
00:00:10 #753 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #754 [Verbose] >
00:00:10 #755 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #756 [Verbose] > // // test
00:00:10 #757 [Verbose] >
00:00:10 #758 [Verbose] > am.init 3i32 ((*) 2)
00:00:10 #759 [Verbose] > |> indexed
00:00:10 #760 [Verbose] > |> _equal (a ;[[0i32, 0; 1, 2; 2, 4]] : a i32 _)
00:00:10 #761 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3018-1883-1badc773f221/main.spi
00:00:10 #762 [Verbose] >
00:00:10 #763 [Verbose] > ╭─[ 307.69ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #764 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:10 #765 [Verbose] > │ and UH0 =                                                                    │
00:00:10 #766 [Verbose] > │     | UH0_0 of int32 * int32 * UH0                                           │
00:00:10 #767 [Verbose] > │     | UH0_1                                                                  │
00:00:10 #768 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : UH0; mutable l2 : int32}        │
00:00:10 #769 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:10 #770 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:10 #771 [Verbose] > │     let v2 : bool = v1 < 3                                                   │
00:00:10 #772 [Verbose] > │     v2                                                                       │
00:00:10 #773 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool =                                 │
00:00:10 #774 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:10 #775 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:10 #776 [Verbose] > │     v3                                                                       │
00:00:10 #777 [Verbose] > │ and method3 (v0 : UH0, v1 : UH0) : UH0 =                                     │
00:00:10 #778 [Verbose] > │     match v0 with                                                            │
00:00:10 #779 [Verbose] > │     | UH0_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:10 #780 [Verbose] > │         let v5 : UH0 = UH0_0(v2, v3, v1)                                     │
00:00:10 #781 [Verbose] > │         method3(v4, v5)                                                      │
00:00:10 #782 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:10 #783 [Verbose] > │         v1                                                                   │
00:00:10 #784 [Verbose] > │ and method5 (v0 : UH0, v1 : int32) : int32 =                                 │
00:00:10 #785 [Verbose] > │     match v0 with                                                            │
00:00:10 #786 [Verbose] > │     | UH0_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:10 #787 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:00:10 #788 [Verbose] > │         method5(v4, v5)                                                      │
00:00:10 #789 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:10 #790 [Verbose] > │         v1                                                                   │
00:00:10 #791 [Verbose] > │ and method6 (v0 : (struct (int32 * int32) []), v1 : UH0, v2 : int32) : int32 │
00:00:10 #792 [Verbose] > │ =                                                                            │
00:00:10 #793 [Verbose] > │     match v1 with                                                            │
00:00:10 #794 [Verbose] > │     | UH0_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:10 #795 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:10 #796 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:00:10 #797 [Verbose] > │         method6(v0, v5, v6)                                                  │
00:00:10 #798 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:10 #799 [Verbose] > │         v2                                                                   │
00:00:10 #800 [Verbose] > │ and method4 (v0 : UH0) : (struct (int32 * int32) []) =                       │
00:00:10 #801 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:10 #802 [Verbose] > │     let v2 : int32 = method5(v0, v1)                                         │
00:00:10 #803 [Verbose] > │     let v3 : (struct (int32 * int32) []) = Array.zeroCreate<struct (int32 *  │
00:00:10 #804 [Verbose] > │ int32)> (v2)                                                                 │
00:00:10 #805 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:10 #806 [Verbose] > │     let v5 : int32 = method6(v3, v0, v4)                                     │
00:00:10 #807 [Verbose] > │     v3                                                                       │
00:00:10 #808 [Verbose] > │ and method7 (v0 : (struct (int32 * int32) [])) : (struct (int32 * int32) []) │
00:00:10 #809 [Verbose] > │ =                                                                            │
00:00:10 #810 [Verbose] > │     v0                                                                       │
00:00:10 #811 [Verbose] > │ and method8 (v0 : (struct (int32 * int32) []), v1 : (struct (int32 * int32)  │
00:00:10 #812 [Verbose] > │ []), v2 : int32) : bool =                                                    │
00:00:10 #813 [Verbose] > │     let v3 : int32 = v0.Length                                               │
00:00:10 #814 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:00:10 #815 [Verbose] > │     if v4 then                                                               │
00:00:10 #816 [Verbose] > │         let struct (v5 : int32, v6 : int32) = v0.[int v2]                    │
00:00:10 #817 [Verbose] > │         let struct (v7 : int32, v8 : int32) = v1.[int v2]                    │
00:00:10 #818 [Verbose] > │         let v9 : bool = v5 = v7                                              │
00:00:10 #819 [Verbose] > │         let v11 : bool =                                                     │
00:00:10 #820 [Verbose] > │             if v9 then                                                       │
00:00:10 #821 [Verbose] > │                 let v10 : bool = v6 = v8                                     │
00:00:10 #822 [Verbose] > │                 v10                                                          │
00:00:10 #823 [Verbose] > │             else                                                             │
00:00:10 #824 [Verbose] > │                 false                                                        │
00:00:10 #825 [Verbose] > │         if v11 then                                                          │
00:00:10 #826 [Verbose] > │             let v12 : int32 = v2 + 1                                         │
00:00:10 #827 [Verbose] > │             method8(v0, v1, v12)                                             │
00:00:10 #828 [Verbose] > │         else                                                                 │
00:00:10 #829 [Verbose] > │             false                                                            │
00:00:10 #830 [Verbose] > │     else                                                                     │
00:00:10 #831 [Verbose] > │         true                                                                 │
00:00:10 #832 [Verbose] > │ and method0 () : unit =                                                      │
00:00:10 #833 [Verbose] > │     let v0 : (int32 []) = Array.zeroCreate<int32> (3)                        │
00:00:10 #834 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:10 #835 [Verbose] > │     while method1(v1) do                                                     │
00:00:10 #836 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:10 #837 [Verbose] > │         let v4 : int32 = 2 * v3                                              │
00:00:10 #838 [Verbose] > │         v0.[int v3] <- v4                                                    │
00:00:10 #839 [Verbose] > │         let v5 : int32 = v3 + 1                                              │
00:00:10 #840 [Verbose] > │         v1.l0 <- v5                                                          │
00:00:10 #841 [Verbose] > │         ()                                                                   │
00:00:10 #842 [Verbose] > │     let v6 : int32 = v0.Length                                               │
00:00:10 #843 [Verbose] > │     let v7 : UH0 = UH0_1                                                     │
00:00:10 #844 [Verbose] > │     let v8 : Mut1 = {l0 = 0; l1 = v7; l2 = 0} : Mut1                         │
00:00:10 #845 [Verbose] > │     while method2(v6, v8) do                                                 │
00:00:10 #846 [Verbose] > │         let v10 : int32 = v8.l0                                              │
00:00:10 #847 [Verbose] > │         let struct (v11 : UH0, v12 : int32) = v8.l1, v8.l2                   │
00:00:10 #848 [Verbose] > │         let v13 : int32 = v0.[int v10]                                       │
00:00:10 #849 [Verbose] > │         let v14 : int32 = v12 + 1                                            │
00:00:10 #850 [Verbose] > │         let v15 : int32 = v10 + 1                                            │
00:00:10 #851 [Verbose] > │         let v16 : UH0 = UH0_0(v12, v13, v11)                                 │
00:00:10 #852 [Verbose] > │         v8.l0 <- v15                                                         │
00:00:10 #853 [Verbose] > │         v8.l1 <- v16                                                         │
00:00:10 #854 [Verbose] > │         v8.l2 <- v14                                                         │
00:00:10 #855 [Verbose] > │         ()                                                                   │
00:00:10 #856 [Verbose] > │     let struct (v17 : UH0, v18 : int32) = v8.l1, v8.l2                       │
00:00:10 #857 [Verbose] > │     let v19 : UH0 = UH0_1                                                    │
00:00:10 #858 [Verbose] > │     let v20 : UH0 = method3(v17, v19)                                        │
00:00:10 #859 [Verbose] > │     let v21 : (struct (int32 * int32) []) = method4(v20)                     │
00:00:10 #860 [Verbose] > │     let v22 : (struct (int32 * int32) []) = [|struct (0, 0); struct (1, 2);  │
00:00:10 #861 [Verbose] > │ struct (2, 4)|]                                                              │
00:00:10 #862 [Verbose] > │     let v23 : (struct (int32 * int32) []) = method7(v22)                     │
00:00:10 #863 [Verbose] > │     let v24 : string = $"__expect / actual: %A{v21} / expected: %A{v23}"     │
00:00:10 #864 [Verbose] > │     let v25 : int32 = v21.Length                                             │
00:00:10 #865 [Verbose] > │     let v26 : int32 = v23.Length                                             │
00:00:10 #866 [Verbose] > │     let v27 : bool = v25 = v26                                               │
00:00:10 #867 [Verbose] > │     let v28 : bool = v27 <> true                                             │
00:00:10 #868 [Verbose] > │     let v31 : bool =                                                         │
00:00:10 #869 [Verbose] > │         if v28 then                                                          │
00:00:10 #870 [Verbose] > │             false                                                            │
00:00:10 #871 [Verbose] > │         else                                                                 │
00:00:10 #872 [Verbose] > │             let v29 : int32 = 0                                              │
00:00:10 #873 [Verbose] > │             method8(v21, v23, v29)                                           │
00:00:10 #874 [Verbose] > │     let v32 : bool = v31 = false                                             │
00:00:10 #875 [Verbose] > │     if v32 then                                                              │
00:00:10 #876 [Verbose] > │         failwith<unit> v24                                                   │
00:00:10 #877 [Verbose] > │ method0()                                                                    │
00:00:10 #878 [Verbose] > │                                                                              │
00:00:10 #879 [Verbose] > │                                                                              │
00:00:10 #880 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #881 [Verbose] >
00:00:10 #882 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #883 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #884 [Verbose] > │ ## enumerate                                                                 │
00:00:10 #885 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #886 [Verbose] >
00:00:10 #887 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #888 [Verbose] > inl enumerate forall dim {int; number} t. (ar : a dim t) : a dim (unativeint *
00:00:10 #889 [Verbose] > t) =
00:00:10 #890 [Verbose] >     inl (a ar) = ar
00:00:10 #891 [Verbose] >     inl ar = ar |> to_vec
00:00:10 #892 [Verbose] >     !\($'"!ar.into_iter().enumerate().map(std::rc::Rc::new).collect()"')
00:00:10 #893 [Verbose] >     |> from_vec
00:00:10 #894 [Verbose] >     |> map_vec from_pair
00:00:10 #895 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3052-5200-54b1b102897e/main.spi
00:00:10 #896 [Verbose] >
00:00:10 #897 [Verbose] > ╭─[ 133.30ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #898 [Verbose] > │ ()                                                                           │
00:00:10 #899 [Verbose] > │                                                                              │
00:00:10 #900 [Verbose] > │                                                                              │
00:00:10 #901 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #902 [Verbose] >
00:00:10 #903 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #904 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #905 [Verbose] > │ ## indexed'                                                                  │
00:00:10 #906 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #907 [Verbose] >
00:00:10 #908 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #909 [Verbose] > inl indexed' forall t dim {int; number} dim' {int; number} u {number}. (ar : a
00:00:10 #910 [Verbose] > dim t) : a dim' (u * t) =
00:00:10 #911 [Verbose] >     ((0, a ;[[]]), ar)
00:00:10 #912 [Verbose] >     ||> am.fold fun (i, acc) x =>
00:00:10 #913 [Verbose] >         i + 1, acc /@ a ;[[i, x]]
00:00:10 #914 [Verbose] >     |> snd
00:00:10 #915 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3065-6522-637d341c83b0/main.spi
00:00:10 #916 [Verbose] >
00:00:10 #917 [Verbose] > ╭─[ 119.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #918 [Verbose] > │ ()                                                                           │
00:00:10 #919 [Verbose] > │                                                                              │
00:00:10 #920 [Verbose] > │                                                                              │
00:00:10 #921 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #922 [Verbose] >
00:00:10 #923 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #924 [Verbose] > // // test
00:00:10 #925 [Verbose] >
00:00:10 #926 [Verbose] > am.init 3i32 ((*) 2)
00:00:10 #927 [Verbose] > |> indexed'
00:00:10 #928 [Verbose] > |> _equal (a ;[[0i32, 0; 1, 2; 2, 4]] : a i32 _)
00:00:10 #929 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3077-7724-71afe8fa8022/main.spi
00:00:10 #930 [Verbose] >
00:00:10 #931 [Verbose] > ╭─[ 194.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #932 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:10 #933 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : int32; mutable l2 : (struct     │
00:00:10 #934 [Verbose] > │ (int32 * int32) [])}                                                         │
00:00:10 #935 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:10 #936 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:10 #937 [Verbose] > │     let v2 : bool = v1 < 3                                                   │
00:00:10 #938 [Verbose] > │     v2                                                                       │
00:00:10 #939 [Verbose] > │ and method2 (v0 : (struct (int32 * int32) [])) : (struct (int32 * int32) []) │
00:00:10 #940 [Verbose] > │ =                                                                            │
00:00:10 #941 [Verbose] > │     v0                                                                       │
00:00:10 #942 [Verbose] > │ and method3 (v0 : int32, v1 : Mut1) : bool =                                 │
00:00:10 #943 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:10 #944 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:10 #945 [Verbose] > │     v3                                                                       │
00:00:10 #946 [Verbose] > │ and method4 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:10 #947 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:10 #948 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:10 #949 [Verbose] > │     v3                                                                       │
00:00:10 #950 [Verbose] > │ and method5 (v0 : (struct (int32 * int32) []), v1 : (struct (int32 * int32)  │
00:00:10 #951 [Verbose] > │ []), v2 : int32) : bool =                                                    │
00:00:10 #952 [Verbose] > │     let v3 : int32 = v0.Length                                               │
00:00:10 #953 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:00:10 #954 [Verbose] > │     if v4 then                                                               │
00:00:10 #955 [Verbose] > │         let struct (v5 : int32, v6 : int32) = v0.[int v2]                    │
00:00:10 #956 [Verbose] > │         let struct (v7 : int32, v8 : int32) = v1.[int v2]                    │
00:00:10 #957 [Verbose] > │         let v9 : bool = v5 = v7                                              │
00:00:10 #958 [Verbose] > │         let v11 : bool =                                                     │
00:00:10 #959 [Verbose] > │             if v9 then                                                       │
00:00:10 #960 [Verbose] > │                 let v10 : bool = v6 = v8                                     │
00:00:10 #961 [Verbose] > │                 v10                                                          │
00:00:10 #962 [Verbose] > │             else                                                             │
00:00:10 #963 [Verbose] > │                 false                                                        │
00:00:10 #964 [Verbose] > │         if v11 then                                                          │
00:00:10 #965 [Verbose] > │             let v12 : int32 = v2 + 1                                         │
00:00:10 #966 [Verbose] > │             method5(v0, v1, v12)                                             │
00:00:10 #967 [Verbose] > │         else                                                                 │
00:00:10 #968 [Verbose] > │             false                                                            │
00:00:10 #969 [Verbose] > │     else                                                                     │
00:00:10 #970 [Verbose] > │         true                                                                 │
00:00:10 #971 [Verbose] > │ and method0 () : unit =                                                      │
00:00:10 #972 [Verbose] > │     let v0 : (int32 []) = Array.zeroCreate<int32> (3)                        │
00:00:10 #973 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:10 #974 [Verbose] > │     while method1(v1) do                                                     │
00:00:10 #975 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:10 #976 [Verbose] > │         let v4 : int32 = 2 * v3                                              │
00:00:10 #977 [Verbose] > │         v0.[int v3] <- v4                                                    │
00:00:10 #978 [Verbose] > │         let v5 : int32 = v3 + 1                                              │
00:00:10 #979 [Verbose] > │         v1.l0 <- v5                                                          │
00:00:10 #980 [Verbose] > │         ()                                                                   │
00:00:10 #981 [Verbose] > │     let v6 : (struct (int32 * int32) []) = [||]                              │
00:00:10 #982 [Verbose] > │     let v7 : (struct (int32 * int32) []) = method2(v6)                       │
00:00:10 #983 [Verbose] > │     let v8 : int32 = v0.Length                                               │
00:00:10 #984 [Verbose] > │     let v9 : Mut1 = {l0 = 0; l1 = 0; l2 = v7} : Mut1                         │
00:00:10 #985 [Verbose] > │     while method3(v8, v9) do                                                 │
00:00:10 #986 [Verbose] > │         let v11 : int32 = v9.l0                                              │
00:00:10 #987 [Verbose] > │         let struct (v12 : int32, v13 : (struct (int32 * int32) [])) = v9.l1, │
00:00:10 #988 [Verbose] > │ v9.l2                                                                        │
00:00:10 #989 [Verbose] > │         let v14 : int32 = v0.[int v11]                                       │
00:00:10 #990 [Verbose] > │         let v15 : int32 = v12 + 1                                            │
00:00:10 #991 [Verbose] > │         let v16 : (struct (int32 * int32) []) = [|struct (v12, v14)|]        │
00:00:10 #992 [Verbose] > │         let v17 : (struct (int32 * int32) []) = method2(v16)                 │
00:00:10 #993 [Verbose] > │         let v18 : int32 = v13.Length                                         │
00:00:10 #994 [Verbose] > │         let v19 : int32 = v17.Length                                         │
00:00:10 #995 [Verbose] > │         let v20 : int32 = v18 + v19                                          │
00:00:10 #996 [Verbose] > │         let v21 : (struct (int32 * int32) []) = Array.zeroCreate<struct      │
00:00:10 #997 [Verbose] > │ (int32 * int32)> (v20)                                                       │
00:00:10 #998 [Verbose] > │         let v22 : Mut0 = {l0 = 0} : Mut0                                     │
00:00:10 #999 [Verbose] > │         while method4(v20, v22) do                                           │
00:00:10 #1000 [Verbose] > │             let v24 : int32 = v22.l0                                         │
00:00:10 #1001 [Verbose] > │             let v25 : bool = v24 < v18                                       │
00:00:10 #1002 [Verbose] > │             let struct (v31 : int32, v32 : int32) =                          │
00:00:10 #1003 [Verbose] > │                 if v25 then                                                  │
00:00:10 #1004 [Verbose] > │                     let struct (v26 : int32, v27 : int32) = v13.[int v24]    │
00:00:10 #1005 [Verbose] > │                     struct (v26, v27)                                        │
00:00:10 #1006 [Verbose] > │                 else                                                         │
00:00:10 #1007 [Verbose] > │                     let v28 : int32 = v24 - v18                              │
00:00:10 #1008 [Verbose] > │                     let struct (v29 : int32, v30 : int32) = v17.[int v28]    │
00:00:10 #1009 [Verbose] > │                     struct (v29, v30)                                        │
00:00:10 #1010 [Verbose] > │             v21.[int v24] <- struct (v31, v32)                               │
00:00:10 #1011 [Verbose] > │             let v33 : int32 = v24 + 1                                        │
00:00:10 #1012 [Verbose] > │             v22.l0 <- v33                                                    │
00:00:10 #1013 [Verbose] > │             ()                                                               │
00:00:10 #1014 [Verbose] > │         let v34 : int32 = v11 + 1                                            │
00:00:10 #1015 [Verbose] > │         v9.l0 <- v34                                                         │
00:00:10 #1016 [Verbose] > │         v9.l1 <- v15                                                         │
00:00:10 #1017 [Verbose] > │         v9.l2 <- v21                                                         │
00:00:10 #1018 [Verbose] > │         ()                                                                   │
00:00:10 #1019 [Verbose] > │     let struct (v35 : int32, v36 : (struct (int32 * int32) [])) = v9.l1,     │
00:00:10 #1020 [Verbose] > │ v9.l2                                                                        │
00:00:10 #1021 [Verbose] > │     let v37 : (struct (int32 * int32) []) = [|struct (0, 0); struct (1, 2);  │
00:00:10 #1022 [Verbose] > │ struct (2, 4)|]                                                              │
00:00:10 #1023 [Verbose] > │     let v38 : (struct (int32 * int32) []) = method2(v37)                     │
00:00:10 #1024 [Verbose] > │     let v39 : string = $"__expect / actual: %A{v36} / expected: %A{v38}"     │
00:00:10 #1025 [Verbose] > │     let v40 : int32 = v36.Length                                             │
00:00:10 #1026 [Verbose] > │     let v41 : int32 = v38.Length                                             │
00:00:10 #1027 [Verbose] > │     let v42 : bool = v40 = v41                                               │
00:00:10 #1028 [Verbose] > │     let v43 : bool = v42 <> true                                             │
00:00:10 #1029 [Verbose] > │     let v46 : bool =                                                         │
00:00:10 #1030 [Verbose] > │         if v43 then                                                          │
00:00:10 #1031 [Verbose] > │             false                                                            │
00:00:10 #1032 [Verbose] > │         else                                                                 │
00:00:10 #1033 [Verbose] > │             let v44 : int32 = 0                                              │
00:00:10 #1034 [Verbose] > │             method5(v36, v38, v44)                                           │
00:00:10 #1035 [Verbose] > │     let v47 : bool = v46 = false                                             │
00:00:10 #1036 [Verbose] > │     if v47 then                                                              │
00:00:10 #1037 [Verbose] > │         failwith<unit> v39                                                   │
00:00:10 #1038 [Verbose] > │ method0()                                                                    │
00:00:10 #1039 [Verbose] > │                                                                              │
00:00:10 #1040 [Verbose] > │                                                                              │
00:00:10 #1041 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1042 [Verbose] > [NbConvertApp] Converting notebook am'.dib.ipynb to html
00:00:11 #1043 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:11 #1044 [Verbose] >   validate(nb)
00:00:12 #1045 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:12 #1046 [Verbose] >   return _pygments_highlight(
00:00:12 #1047 [Verbose] > [NbConvertApp] Writing 347359 bytes to am'.dib.html
00:00:12 #1048 [Debug] executeAsync / exitCode: 0 / output.Length: 87483
00:00:12 #1049 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #17 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #18 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #19 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 \"listm'.dib\"""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #20 [Verbose] >
00:00:02 #21 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #22 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #23 [Verbose] > │ # listm                                                                      │
00:00:02 #24 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #25 [Verbose] >
00:00:02 #26 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #27 [Verbose] > // // test
00:00:02 #28 [Verbose] >
00:00:02 #29 [Verbose] > open testing
00:00:02 #30 [Verbose] >
00:00:02 #31 [Verbose] > prototype append t : t -> t -> t
00:00:04 #32 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3681-8177-8557a8ffa756/main.spi
00:00:05 #33 [Verbose] >
00:00:05 #34 [Verbose] > ╭─[ 3.59s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #35 [Verbose] > │ ()                                                                           │
00:00:05 #36 [Verbose] > │                                                                              │
00:00:05 #37 [Verbose] > │                                                                              │
00:00:05 #38 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #39 [Verbose] >
00:00:05 #40 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #41 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #42 [Verbose] > │ ## append                                                                    │
00:00:05 #43 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #44 [Verbose] >
00:00:05 #45 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #46 [Verbose] > instance append list t =
00:00:05 #47 [Verbose] >     listm.append
00:00:06 #48 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3908-0836-0148c8e3a721/main.spi
00:00:06 #49 [Verbose] >
00:00:06 #50 [Verbose] > ╭─[ 147.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #51 [Verbose] > │ ()                                                                           │
00:00:06 #52 [Verbose] > │                                                                              │
00:00:06 #53 [Verbose] > │                                                                              │
00:00:06 #54 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #55 [Verbose] >
00:00:06 #56 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #57 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #58 [Verbose] > │ ## /@                                                                        │
00:00:06 #59 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #60 [Verbose] >
00:00:06 #61 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #62 [Verbose] > inl (/@) a b =
00:00:06 #63 [Verbose] >     b |> append a
00:00:06 #64 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3923-2336-22d5566b7b31/main.spi
00:00:06 #65 [Verbose] >
00:00:06 #66 [Verbose] > ╭─[ 142.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #67 [Verbose] > │ ()                                                                           │
00:00:06 #68 [Verbose] > │                                                                              │
00:00:06 #69 [Verbose] > │                                                                              │
00:00:06 #70 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #71 [Verbose] >
00:00:06 #72 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #73 [Verbose] > // // test
00:00:06 #74 [Verbose] >
00:00:06 #75 [Verbose] > [[ "a"; "b" ]] /@ [[ "c"; "d" ]]
00:00:06 #76 [Verbose] > |> _equal [[ "a"; "b"; "c"; "d" ]]
00:00:06 #77 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-3937-3743-33b75f8d5f1c/main.spi
00:00:07 #78 [Verbose] >
00:00:07 #79 [Verbose] > ╭─[ 842.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #80 [Verbose] > │ type UH0 =                                                                   │
00:00:07 #81 [Verbose] > │     | UH0_0 of string * UH0                                                  │
00:00:07 #82 [Verbose] > │     | UH0_1                                                                  │
00:00:07 #83 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #84 [Verbose] > │     let v0 : string = "a"                                                    │
00:00:07 #85 [Verbose] > │     let v1 : string = "b"                                                    │
00:00:07 #86 [Verbose] > │     let v2 : string = "c"                                                    │
00:00:07 #87 [Verbose] > │     let v3 : string = "d"                                                    │
00:00:07 #88 [Verbose] > │     let v4 : UH0 = UH0_1                                                     │
00:00:07 #89 [Verbose] > │     let v5 : UH0 = UH0_0(v3, v4)                                             │
00:00:07 #90 [Verbose] > │     let v6 : UH0 = UH0_0(v2, v5)                                             │
00:00:07 #91 [Verbose] > │     let v7 : UH0 = UH0_0(v1, v6)                                             │
00:00:07 #92 [Verbose] > │     let v8 : UH0 = UH0_0(v0, v7)                                             │
00:00:07 #93 [Verbose] > │     let v9 : UH0 = UH0_1                                                     │
00:00:07 #94 [Verbose] > │     let v10 : UH0 = UH0_0(v3, v9)                                            │
00:00:07 #95 [Verbose] > │     let v11 : UH0 = UH0_0(v2, v10)                                           │
00:00:07 #96 [Verbose] > │     let v12 : UH0 = UH0_0(v1, v11)                                           │
00:00:07 #97 [Verbose] > │     let v13 : UH0 = UH0_0(v0, v12)                                           │
00:00:07 #98 [Verbose] > │     let v14 : string = $"__expect / actual: %A{v8} / expected: %A{v13}"      │
00:00:07 #99 [Verbose] > │     ()                                                                       │
00:00:07 #100 [Verbose] > │ method0()                                                                    │
00:00:07 #101 [Verbose] > │                                                                              │
00:00:07 #102 [Verbose] > │                                                                              │
00:00:07 #103 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #104 [Verbose] >
00:00:07 #105 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #106 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #107 [Verbose] > │ ## init_series                                                               │
00:00:07 #108 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #109 [Verbose] >
00:00:07 #110 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #111 [Verbose] > inl init_series start end inc =
00:00:07 #112 [Verbose] >     inl total : f64 = conv ((end - start) / inc) + 1
00:00:07 #113 [Verbose] >     listm.init total (conv >> (*) inc >> (+) start)
00:00:07 #114 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4021-2197-29f28fc6ec53/main.spi
00:00:07 #115 [Verbose] >
00:00:07 #116 [Verbose] > ╭─[ 124.03ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #117 [Verbose] > │ ()                                                                           │
00:00:07 #118 [Verbose] > │                                                                              │
00:00:07 #119 [Verbose] > │                                                                              │
00:00:07 #120 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #121 [Verbose] >
00:00:07 #122 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #123 [Verbose] > // // test
00:00:07 #124 [Verbose] >
00:00:07 #125 [Verbose] > init_series 0 1 0.5
00:00:07 #126 [Verbose] > |> _equal [[ 0f64; 0.5; 1 ]]
00:00:07 #127 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4034-3438-3bc32cea8765/main.spi
00:00:07 #128 [Verbose] >
00:00:07 #129 [Verbose] > ╭─[ 168.68ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #130 [Verbose] > │ type UH0 =                                                                   │
00:00:07 #131 [Verbose] > │     | UH0_0 of float * UH0                                                   │
00:00:07 #132 [Verbose] > │     | UH0_1                                                                  │
00:00:07 #133 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #134 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:07 #135 [Verbose] > │     let v1 : UH0 = UH0_0(1.0, v0)                                            │
00:00:07 #136 [Verbose] > │     let v2 : UH0 = UH0_0(0.5, v1)                                            │
00:00:07 #137 [Verbose] > │     let v3 : UH0 = UH0_0(0.0, v2)                                            │
00:00:07 #138 [Verbose] > │     let v4 : UH0 = UH0_1                                                     │
00:00:07 #139 [Verbose] > │     let v5 : UH0 = UH0_0(1.0, v4)                                            │
00:00:07 #140 [Verbose] > │     let v6 : UH0 = UH0_0(0.5, v5)                                            │
00:00:07 #141 [Verbose] > │     let v7 : UH0 = UH0_0(0.0, v6)                                            │
00:00:07 #142 [Verbose] > │     let v8 : string = $"__expect / actual: %A{v3} / expected: %A{v7}"        │
00:00:07 #143 [Verbose] > │     ()                                                                       │
00:00:07 #144 [Verbose] > │ method0()                                                                    │
00:00:07 #145 [Verbose] > │                                                                              │
00:00:07 #146 [Verbose] > │                                                                              │
00:00:07 #147 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #148 [Verbose] >
00:00:07 #149 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #150 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #151 [Verbose] > │ ## try_item                                                                  │
00:00:07 #152 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #153 [Verbose] >
00:00:07 #154 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #155 [Verbose] > inl rec try_item i = function
00:00:07 #156 [Verbose] >     | Cons (x, _) when i = 0 => Some x
00:00:07 #157 [Verbose] >     | Cons (_, xs) => try_item (i - 1) xs
00:00:07 #158 [Verbose] >     | Nil => None
00:00:07 #159 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4051-5146-5b6293044916/main.spi
00:00:07 #160 [Verbose] >
00:00:07 #161 [Verbose] > ╭─[ 120.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #162 [Verbose] > │ ()                                                                           │
00:00:07 #163 [Verbose] > │                                                                              │
00:00:07 #164 [Verbose] > │                                                                              │
00:00:07 #165 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #166 [Verbose] >
00:00:07 #167 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #168 [Verbose] > // // test
00:00:07 #169 [Verbose] >
00:00:07 #170 [Verbose] > listm.init 10i32 id
00:00:07 #171 [Verbose] > |> try_item 9i32
00:00:07 #172 [Verbose] > |> _equal (Some 9)
00:00:07 #173 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4063-6355-67009f736d38/main.spi
00:00:07 #174 [Verbose] >
00:00:07 #175 [Verbose] > ╭─[ 215.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #176 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:07 #177 [Verbose] > │     | US0_0                                                                  │
00:00:07 #178 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:07 #179 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #180 [Verbose] > │     let v0 : US0 = US0_1(9)                                                  │
00:00:07 #181 [Verbose] > │     let v1 : US0 = US0_1(9)                                                  │
00:00:07 #182 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:07 #183 [Verbose] > │     ()                                                                       │
00:00:07 #184 [Verbose] > │ method0()                                                                    │
00:00:07 #185 [Verbose] > │                                                                              │
00:00:07 #186 [Verbose] > │                                                                              │
00:00:07 #187 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #188 [Verbose] >
00:00:07 #189 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #190 [Verbose] > // // test
00:00:07 #191 [Verbose] >
00:00:07 #192 [Verbose] > listm.init 10i32 id
00:00:07 #193 [Verbose] > |> try_item 10i32
00:00:07 #194 [Verbose] > |> _equal None
00:00:07 #195 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4085-8520-8f4dfc801751/main.spi
00:00:07 #196 [Verbose] >
00:00:07 #197 [Verbose] > ╭─[ 162.13ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #198 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:07 #199 [Verbose] > │     | US0_0                                                                  │
00:00:07 #200 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:07 #201 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #202 [Verbose] > │     let v0 : US0 = US0_0                                                     │
00:00:07 #203 [Verbose] > │     let v1 : US0 = US0_0                                                     │
00:00:07 #204 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:07 #205 [Verbose] > │     ()                                                                       │
00:00:07 #206 [Verbose] > │ method0()                                                                    │
00:00:07 #207 [Verbose] > │                                                                              │
00:00:07 #208 [Verbose] > │                                                                              │
00:00:07 #209 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #210 [Verbose] >
00:00:07 #211 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #212 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #213 [Verbose] > │ ## list_item                                                                 │
00:00:07 #214 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #215 [Verbose] >
00:00:07 #216 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #217 [Verbose] > inl item i =
00:00:07 #218 [Verbose] >     try_item i >> optionm.value
00:00:07 #219 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4101-0165-0949550afd58/main.spi
00:00:07 #220 [Verbose] >
00:00:07 #221 [Verbose] > ╭─[ 130.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #222 [Verbose] > │ ()                                                                           │
00:00:07 #223 [Verbose] > │                                                                              │
00:00:07 #224 [Verbose] > │                                                                              │
00:00:07 #225 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #226 [Verbose] >
00:00:07 #227 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #228 [Verbose] > // // test
00:00:07 #229 [Verbose] >
00:00:07 #230 [Verbose] > listm.init 10i32 id
00:00:07 #231 [Verbose] > |> item 9i32
00:00:08 #232 [Verbose] > |> _equal 9
00:00:08 #233 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4114-1476-15426561c1cd/main.spi
00:00:08 #234 [Verbose] >
00:00:08 #235 [Verbose] > ╭─[ 127.86ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #236 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #237 [Verbose] > │     let v0 : string = $"__expect / actual: %A{9} / expected: %A{9}"          │
00:00:08 #238 [Verbose] > │     ()                                                                       │
00:00:08 #239 [Verbose] > │ method0()                                                                    │
00:00:08 #240 [Verbose] > │                                                                              │
00:00:08 #241 [Verbose] > │                                                                              │
00:00:08 #242 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #243 [Verbose] >
00:00:08 #244 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #245 [Verbose] > // // test
00:00:08 #246 [Verbose] >
00:00:08 #247 [Verbose] > fun () =>
00:00:08 #248 [Verbose] >     listm.init 10i32 id
00:00:08 #249 [Verbose] >     |> item 10i32
00:00:08 #250 [Verbose] >     |> ignore
00:00:08 #251 [Verbose] > |> _throws
00:00:08 #252 [Verbose] > |> _equal (Some "Option does not have a value.")
00:00:08 #253 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4127-2761-28b30d9ffbfb/main.spi
00:00:08 #254 [Verbose] >
00:00:08 #255 [Verbose] > ╭─[ 262.69ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #256 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:08 #257 [Verbose] > │     | US0_0                                                                  │
00:00:08 #258 [Verbose] > │     | US0_1 of f1_0 : string                                                 │
00:00:08 #259 [Verbose] > │ let rec closure0 () () : unit =                                              │
00:00:08 #260 [Verbose] > │     let v0 : int32 = failwith<int32> "Option does not have a value."         │
00:00:08 #261 [Verbose] > │     ()                                                                       │
00:00:08 #262 [Verbose] > │ and closure1 () (v0 : string) : US0 =                                        │
00:00:08 #263 [Verbose] > │     US0_1(v0)                                                                │
00:00:08 #264 [Verbose] > │ and method0 () : unit =                                                      │
00:00:08 #265 [Verbose] > │     let v0 : (unit -> unit) = closure0()                                     │
00:00:08 #266 [Verbose] > │     let v1 : US0 = US0_0                                                     │
00:00:08 #267 [Verbose] > │     let v2 : (string -> US0) = closure1()                                    │
00:00:08 #268 [Verbose] > │     let v3 : US0 = try v0 (); v1 with ex -> v2 ex.Message                    │
00:00:08 #269 [Verbose] > │     let v4 : string = "Option does not have a value."                        │
00:00:08 #270 [Verbose] > │     let v5 : US0 = US0_1(v4)                                                 │
00:00:08 #271 [Verbose] > │     let v6 : string = $"__expect / actual: %A{v3} / expected: %A{v5}"        │
00:00:08 #272 [Verbose] > │     let v10 : bool =                                                         │
00:00:08 #273 [Verbose] > │         match v3 with                                                        │
00:00:08 #274 [Verbose] > │         | US0_1(v8) -> (* Some *)                                            │
00:00:08 #275 [Verbose] > │             let v9 : bool = v8 = "Option does not have a value."             │
00:00:08 #276 [Verbose] > │             v9                                                               │
00:00:08 #277 [Verbose] > │         | _ ->                                                               │
00:00:08 #278 [Verbose] > │             false                                                            │
00:00:08 #279 [Verbose] > │     let v11 : bool = v10 = false                                             │
00:00:08 #280 [Verbose] > │     if v11 then                                                              │
00:00:08 #281 [Verbose] > │         failwith<unit> v6                                                    │
00:00:08 #282 [Verbose] > │ method0()                                                                    │
00:00:08 #283 [Verbose] > │                                                                              │
00:00:08 #284 [Verbose] > │                                                                              │
00:00:08 #285 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #286 [Verbose] >
00:00:08 #287 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #288 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #289 [Verbose] > │ ## try_item_                                                                 │
00:00:08 #290 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #291 [Verbose] >
00:00:08 #292 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #293 [Verbose] > let rec try_item_ i = function
00:00:08 #294 [Verbose] >     | Cons (x, _) when i = 0 => Some x
00:00:08 #295 [Verbose] >     | Cons (_, xs) => try_item_ (i - 1) xs
00:00:08 #296 [Verbose] >     | Nil => None
00:00:08 #297 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4154-5416-5cb0be8d6ee0/main.spi
00:00:08 #298 [Verbose] >
00:00:08 #299 [Verbose] > ╭─[ 122.04ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #300 [Verbose] > │ ()                                                                           │
00:00:08 #301 [Verbose] > │                                                                              │
00:00:08 #302 [Verbose] > │                                                                              │
00:00:08 #303 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #304 [Verbose] >
00:00:08 #305 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #306 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #307 [Verbose] > │ ## item_                                                                     │
00:00:08 #308 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #309 [Verbose] >
00:00:08 #310 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #311 [Verbose] > inl item_ i =
00:00:08 #312 [Verbose] >     try_item_ i >> optionm.value
00:00:08 #313 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4166-6646-6d55dbc1cc27/main.spi
00:00:08 #314 [Verbose] >
00:00:08 #315 [Verbose] > ╭─[ 118.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #316 [Verbose] > │ ()                                                                           │
00:00:08 #317 [Verbose] > │                                                                              │
00:00:08 #318 [Verbose] > │                                                                              │
00:00:08 #319 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #320 [Verbose] >
00:00:08 #321 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #322 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #323 [Verbose] > │ ## sum                                                                       │
00:00:08 #324 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #325 [Verbose] >
00:00:08 #326 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #327 [Verbose] > inl sum list =
00:00:08 #328 [Verbose] >     list |> listm.fold (+) 0
00:00:08 #329 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4178-7853-7dc8f581850f/main.spi
00:00:08 #330 [Verbose] >
00:00:08 #331 [Verbose] > ╭─[ 118.62ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #332 [Verbose] > │ ()                                                                           │
00:00:08 #333 [Verbose] > │                                                                              │
00:00:08 #334 [Verbose] > │                                                                              │
00:00:08 #335 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #336 [Verbose] >
00:00:08 #337 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #338 [Verbose] > // // test
00:00:08 #339 [Verbose] >
00:00:08 #340 [Verbose] > listm.init 10i32 id
00:00:08 #341 [Verbose] > |> sum
00:00:08 #342 [Verbose] > |> _equal 45
00:00:08 #343 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4190-9051-97b357887bf6/main.spi
00:00:08 #344 [Verbose] >
00:00:08 #345 [Verbose] > ╭─[ 121.91ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #346 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #347 [Verbose] > │     let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}"        │
00:00:08 #348 [Verbose] > │     ()                                                                       │
00:00:08 #349 [Verbose] > │ method0()                                                                    │
00:00:08 #350 [Verbose] > │                                                                              │
00:00:08 #351 [Verbose] > │                                                                              │
00:00:08 #352 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #353 [Verbose] >
00:00:08 #354 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #355 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #356 [Verbose] > │ ## unzip                                                                     │
00:00:08 #357 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #358 [Verbose] >
00:00:08 #359 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #360 [Verbose] > inl unzip list =
00:00:08 #361 [Verbose] >     (([[]], [[]]), list)
00:00:08 #362 [Verbose] >     ||> listm.fold fun (acc_x, acc_y) (x, y) =>
00:00:08 #363 [Verbose] >         x :: acc_x, y :: acc_y
00:00:08 #364 [Verbose] >     |> fun x, y =>
00:00:08 #365 [Verbose] >         x |> listm.rev, y |> listm.rev
00:00:08 #366 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4202-0290-0f718ba80676/main.spi
00:00:09 #367 [Verbose] >
00:00:09 #368 [Verbose] > ╭─[ 135.00ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #369 [Verbose] > │ ()                                                                           │
00:00:09 #370 [Verbose] > │                                                                              │
00:00:09 #371 [Verbose] > │                                                                              │
00:00:09 #372 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #373 [Verbose] >
00:00:09 #374 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #375 [Verbose] > // // test
00:00:09 #376 [Verbose] >
00:00:09 #377 [Verbose] > listm.init 10i32 id
00:00:09 #378 [Verbose] > |> listm.map (fun x => x, x)
00:00:09 #379 [Verbose] > |> unzip
00:00:09 #380 [Verbose] > |> fun x, y =>
00:00:09 #381 [Verbose] >     x |> sum
00:00:09 #382 [Verbose] >     |> _equal 45
00:00:09 #383 [Verbose] >
00:00:09 #384 [Verbose] >     y |> sum
00:00:09 #385 [Verbose] >     |> _equal 45
00:00:09 #386 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4216-1645-1b8cd39aaaa1/main.spi
00:00:09 #387 [Verbose] >
00:00:09 #388 [Verbose] > ╭─[ 130.58ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #389 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #390 [Verbose] > │     let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}"        │
00:00:09 #391 [Verbose] > │     let v1 : string = $"__expect / actual: %A{45} / expected: %A{45}"        │
00:00:09 #392 [Verbose] > │     ()                                                                       │
00:00:09 #393 [Verbose] > │ method0()                                                                    │
00:00:09 #394 [Verbose] > │                                                                              │
00:00:09 #395 [Verbose] > │                                                                              │
00:00:09 #396 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #397 [Verbose] >
00:00:09 #398 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #399 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #400 [Verbose] > │ ## try_index_of                                                              │
00:00:09 #401 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #402 [Verbose] >
00:00:09 #403 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #404 [Verbose] > inl try_index_of item list =
00:00:09 #405 [Verbose] >     inl rec loop i = function
00:00:09 #406 [Verbose] >         | [[]] => None
00:00:09 #407 [Verbose] >         | x :: xs =>
00:00:09 #408 [Verbose] >             if x = item
00:00:09 #409 [Verbose] >             then Some i
00:00:09 #410 [Verbose] >             else loop (i + 1) xs
00:00:09 #411 [Verbose] >     loop 0 list
00:00:09 #412 [Verbose] >
00:00:09 #413 [Verbose] > inl index_of item =
00:00:09 #414 [Verbose] >     try_index_of item >> optionm.value
00:00:09 #415 [Verbose] >
00:00:09 #416 [Verbose] > inl try_index_of_ item list =
00:00:09 #417 [Verbose] >     let rec loop i = function
00:00:09 #418 [Verbose] >         | [[]] => None
00:00:09 #419 [Verbose] >         | x :: xs =>
00:00:09 #420 [Verbose] >             if x = item
00:00:09 #421 [Verbose] >             then Some i
00:00:09 #422 [Verbose] >             else loop (i + 1) xs
00:00:09 #423 [Verbose] >     loop 0 list
00:00:09 #424 [Verbose] >
00:00:09 #425 [Verbose] > inl index_of_ item =
00:00:09 #426 [Verbose] >     try_index_of_ item >> optionm.value
00:00:09 #427 [Verbose] >
00:00:09 #428 [Verbose] > inl try_index_of__ item list =
00:00:09 #429 [Verbose] >     inl i = mut 0
00:00:09 #430 [Verbose] >     inl list = mut list
00:00:09 #431 [Verbose] >     inl result = mut None
00:00:09 #432 [Verbose] >     let rec loop () =
00:00:09 #433 [Verbose] >         match *list with
00:00:09 #434 [Verbose] >         | [[]] => result <- None
00:00:09 #435 [Verbose] >         | x :: xs =>
00:00:09 #436 [Verbose] >             if x = item
00:00:09 #437 [Verbose] >             then result <- Some *i
00:00:09 #438 [Verbose] >             else
00:00:09 #439 [Verbose] >                 i <- *i + 1
00:00:09 #440 [Verbose] >                 list <- xs
00:00:09 #441 [Verbose] >                 loop ()
00:00:09 #442 [Verbose] >     loop ()
00:00:09 #443 [Verbose] >     *result
00:00:09 #444 [Verbose] >
00:00:09 #445 [Verbose] > inl index_of__ item =
00:00:09 #446 [Verbose] >     try_index_of__ item >> optionm.value
00:00:09 #447 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4229-2972-23dcbde770bd/main.spi
00:00:09 #448 [Verbose] >
00:00:09 #449 [Verbose] > ╭─[ 123.28ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #450 [Verbose] > │ ()                                                                           │
00:00:09 #451 [Verbose] > │                                                                              │
00:00:09 #452 [Verbose] > │                                                                              │
00:00:09 #453 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #454 [Verbose] >
00:00:09 #455 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #456 [Verbose] > // // test
00:00:09 #457 [Verbose] >
00:00:09 #458 [Verbose] > listm.init 10i32 id
00:00:09 #459 [Verbose] > |> index_of 5i32
00:00:09 #460 [Verbose] > |> _equal 5i32
00:00:09 #461 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4242-4201-4840a3119fd7/main.spi
00:00:09 #462 [Verbose] >
00:00:09 #463 [Verbose] > ╭─[ 121.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #464 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #465 [Verbose] > │     let v0 : string = $"__expect / actual: %A{5} / expected: %A{5}"          │
00:00:09 #466 [Verbose] > │     ()                                                                       │
00:00:09 #467 [Verbose] > │ method0()                                                                    │
00:00:09 #468 [Verbose] > │                                                                              │
00:00:09 #469 [Verbose] > │                                                                              │
00:00:09 #470 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #471 [Verbose] >
00:00:09 #472 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #473 [Verbose] > // // test
00:00:09 #474 [Verbose] >
00:00:09 #475 [Verbose] > listm.init 10i32 id
00:00:09 #476 [Verbose] > |> try_index_of 10i32
00:00:09 #477 [Verbose] > |> _equal (None : option i32)
00:00:09 #478 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4254-5429-511ce1eb2955/main.spi
00:00:09 #479 [Verbose] >
00:00:09 #480 [Verbose] > ╭─[ 157.43ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #481 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:09 #482 [Verbose] > │     | US0_0                                                                  │
00:00:09 #483 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:09 #484 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #485 [Verbose] > │     let v0 : US0 = US0_0                                                     │
00:00:09 #486 [Verbose] > │     let v1 : US0 = US0_0                                                     │
00:00:09 #487 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:09 #488 [Verbose] > │     ()                                                                       │
00:00:09 #489 [Verbose] > │ method0()                                                                    │
00:00:09 #490 [Verbose] > │                                                                              │
00:00:09 #491 [Verbose] > │                                                                              │
00:00:09 #492 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #493 [Verbose] >
00:00:09 #494 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #495 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #496 [Verbose] > │ ## try_find                                                                  │
00:00:09 #497 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #498 [Verbose] >
00:00:09 #499 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #500 [Verbose] > inl try_find fn list =
00:00:09 #501 [Verbose] >     inl rec loop = function
00:00:09 #502 [Verbose] >         | [[]] => None
00:00:09 #503 [Verbose] >         | x :: xs =>
00:00:09 #504 [Verbose] >             if fn x
00:00:09 #505 [Verbose] >             then Some x
00:00:09 #506 [Verbose] >             else loop xs
00:00:09 #507 [Verbose] >     loop list
00:00:09 #508 [Verbose] >
00:00:09 #509 [Verbose] > inl try_find_ fn list =
00:00:09 #510 [Verbose] >     let rec loop = function
00:00:09 #511 [Verbose] >         | [[]] => None
00:00:09 #512 [Verbose] >         | x :: xs =>
00:00:09 #513 [Verbose] >             if fn x
00:00:09 #514 [Verbose] >             then Some x
00:00:09 #515 [Verbose] >             else loop xs
00:00:09 #516 [Verbose] >     loop list
00:00:09 #517 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4270-7021-7f612db750fc/main.spi
00:00:09 #518 [Verbose] >
00:00:09 #519 [Verbose] > ╭─[ 133.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #520 [Verbose] > │ ()                                                                           │
00:00:09 #521 [Verbose] > │                                                                              │
00:00:09 #522 [Verbose] > │                                                                              │
00:00:09 #523 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #524 [Verbose] >
00:00:09 #525 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #526 [Verbose] > // // test
00:00:09 #527 [Verbose] >
00:00:09 #528 [Verbose] > listm.init 10i32 id
00:00:09 #529 [Verbose] > |> try_find ((=) 5i32)
00:00:09 #530 [Verbose] > |> _equal (Some 5i32)
00:00:09 #531 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4283-8360-8007f329ef42/main.spi
00:00:09 #532 [Verbose] >
00:00:09 #533 [Verbose] > ╭─[ 264.26ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #534 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:09 #535 [Verbose] > │     | US0_0                                                                  │
00:00:09 #536 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:09 #537 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #538 [Verbose] > │     let v0 : US0 = US0_1(5)                                                  │
00:00:09 #539 [Verbose] > │     let v1 : US0 = US0_1(5)                                                  │
00:00:09 #540 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:09 #541 [Verbose] > │     ()                                                                       │
00:00:09 #542 [Verbose] > │ method0()                                                                    │
00:00:09 #543 [Verbose] > │                                                                              │
00:00:09 #544 [Verbose] > │                                                                              │
00:00:09 #545 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #546 [Verbose] >
00:00:09 #547 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #548 [Verbose] > inl find x =
00:00:09 #549 [Verbose] >     try_find x >> optionm.value
00:00:09 #550 [Verbose] >
00:00:09 #551 [Verbose] > inl find_ x =
00:00:09 #552 [Verbose] >     try_find_ x >> optionm.value
00:00:10 #553 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4310-1020-1e867faf3b8e/main.spi
00:00:10 #554 [Verbose] >
00:00:10 #555 [Verbose] > ╭─[ 119.28ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #556 [Verbose] > │ ()                                                                           │
00:00:10 #557 [Verbose] > │                                                                              │
00:00:10 #558 [Verbose] > │                                                                              │
00:00:10 #559 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #560 [Verbose] >
00:00:10 #561 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #562 [Verbose] > // // test
00:00:10 #563 [Verbose] >
00:00:10 #564 [Verbose] > listm.init 10i32 id
00:00:10 #565 [Verbose] > |> find ((=) 5i32)
00:00:10 #566 [Verbose] > |> _equal 5i32
00:00:10 #567 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4322-2202-28e57d17662e/main.spi
00:00:10 #568 [Verbose] >
00:00:10 #569 [Verbose] > ╭─[ 121.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #570 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #571 [Verbose] > │     let v0 : string = $"__expect / actual: %A{5} / expected: %A{5}"          │
00:00:10 #572 [Verbose] > │     ()                                                                       │
00:00:10 #573 [Verbose] > │ method0()                                                                    │
00:00:10 #574 [Verbose] > │                                                                              │
00:00:10 #575 [Verbose] > │                                                                              │
00:00:10 #576 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #577 [Verbose] >
00:00:10 #578 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #579 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #580 [Verbose] > │ ## choose                                                                    │
00:00:10 #581 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #582 [Verbose] >
00:00:10 #583 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #584 [Verbose] > inl choose f l =
00:00:10 #585 [Verbose] >     (l, [[]])
00:00:10 #586 [Verbose] >     ||> listm.foldBack fun x acc =>
00:00:10 #587 [Verbose] >         match f x with
00:00:10 #588 [Verbose] >         | Some y => y :: acc
00:00:10 #589 [Verbose] >         | None => acc
00:00:10 #590 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4334-3436-3f23bb521ee6/main.spi
00:00:10 #591 [Verbose] >
00:00:10 #592 [Verbose] > ╭─[ 128.25ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #593 [Verbose] > │ ()                                                                           │
00:00:10 #594 [Verbose] > │                                                                              │
00:00:10 #595 [Verbose] > │                                                                              │
00:00:10 #596 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #597 [Verbose] >
00:00:10 #598 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #599 [Verbose] > // // test
00:00:10 #600 [Verbose] >
00:00:10 #601 [Verbose] > listm.init 10i32 id
00:00:10 #602 [Verbose] > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:00:10 #603 [Verbose] > |> _equal [[ 0; 2; 4; 6; 8 ]]
00:00:10 #604 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4347-4720-474459758617/main.spi
00:00:10 #605 [Verbose] >
00:00:10 #606 [Verbose] > ╭─[ 150.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #607 [Verbose] > │ type UH0 =                                                                   │
00:00:10 #608 [Verbose] > │     | UH0_0 of int32 * UH0                                                   │
00:00:10 #609 [Verbose] > │     | UH0_1                                                                  │
00:00:10 #610 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #611 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:10 #612 [Verbose] > │     let v1 : UH0 = UH0_0(8, v0)                                              │
00:00:10 #613 [Verbose] > │     let v2 : UH0 = UH0_0(6, v1)                                              │
00:00:10 #614 [Verbose] > │     let v3 : UH0 = UH0_0(4, v2)                                              │
00:00:10 #615 [Verbose] > │     let v4 : UH0 = UH0_0(2, v3)                                              │
00:00:10 #616 [Verbose] > │     let v5 : UH0 = UH0_0(0, v4)                                              │
00:00:10 #617 [Verbose] > │     let v6 : UH0 = UH0_1                                                     │
00:00:10 #618 [Verbose] > │     let v7 : UH0 = UH0_0(8, v6)                                              │
00:00:10 #619 [Verbose] > │     let v8 : UH0 = UH0_0(6, v7)                                              │
00:00:10 #620 [Verbose] > │     let v9 : UH0 = UH0_0(4, v8)                                              │
00:00:10 #621 [Verbose] > │     let v10 : UH0 = UH0_0(2, v9)                                             │
00:00:10 #622 [Verbose] > │     let v11 : UH0 = UH0_0(0, v10)                                            │
00:00:10 #623 [Verbose] > │     let v12 : string = $"__expect / actual: %A{v5} / expected: %A{v11}"      │
00:00:10 #624 [Verbose] > │     ()                                                                       │
00:00:10 #625 [Verbose] > │ method0()                                                                    │
00:00:10 #626 [Verbose] > │                                                                              │
00:00:10 #627 [Verbose] > │                                                                              │
00:00:10 #628 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #629 [Verbose] >
00:00:10 #630 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #631 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #632 [Verbose] > │ ## zip_with                                                                  │
00:00:10 #633 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #634 [Verbose] >
00:00:10 #635 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #636 [Verbose] > inl zip_with fn xs ys =
00:00:10 #637 [Verbose] >     inl rec loop acc xs ys =
00:00:10 #638 [Verbose] >         match xs, ys with
00:00:10 #639 [Verbose] >         | Cons (x, xs), Cons (y, ys) =>
00:00:10 #640 [Verbose] >             loop (fn x y :: acc) xs ys
00:00:10 #641 [Verbose] >         | _ => listm.rev acc
00:00:10 #642 [Verbose] >     loop [[]] xs ys
00:00:10 #643 [Verbose] >
00:00:10 #644 [Verbose] > inl zip_with_ fn xs ys =
00:00:10 #645 [Verbose] >     let rec loop acc xs ys =
00:00:10 #646 [Verbose] >         match xs, ys with
00:00:10 #647 [Verbose] >         | Cons (x, xs), Cons (y, ys) =>
00:00:10 #648 [Verbose] >             loop (fn x y :: acc) xs ys
00:00:10 #649 [Verbose] >         | _ => listm.rev acc
00:00:10 #650 [Verbose] >     loop [[]] xs ys
00:00:10 #651 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4362-6246-648a4ecc2adf/main.spi
00:00:10 #652 [Verbose] >
00:00:10 #653 [Verbose] > ╭─[ 118.25ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #654 [Verbose] > │ ()                                                                           │
00:00:10 #655 [Verbose] > │                                                                              │
00:00:10 #656 [Verbose] > │                                                                              │
00:00:10 #657 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #658 [Verbose] >
00:00:10 #659 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #660 [Verbose] > // // test
00:00:10 #661 [Verbose] >
00:00:10 #662 [Verbose] > ([[ 1i32; 2; 3 ]], [[ 4; 5; 6 ]])
00:00:10 #663 [Verbose] > ||> zip_with (+)
00:00:10 #664 [Verbose] > |> _equal [[ 5; 7; 9 ]]
00:00:10 #665 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4374-7427-70f47412793b/main.spi
00:00:10 #666 [Verbose] >
00:00:10 #667 [Verbose] > ╭─[ 146.69ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #668 [Verbose] > │ type UH0 =                                                                   │
00:00:10 #669 [Verbose] > │     | UH0_0 of int32 * UH0                                                   │
00:00:10 #670 [Verbose] > │     | UH0_1                                                                  │
00:00:10 #671 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #672 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:10 #673 [Verbose] > │     let v1 : UH0 = UH0_0(9, v0)                                              │
00:00:10 #674 [Verbose] > │     let v2 : UH0 = UH0_0(7, v1)                                              │
00:00:10 #675 [Verbose] > │     let v3 : UH0 = UH0_0(5, v2)                                              │
00:00:10 #676 [Verbose] > │     let v4 : UH0 = UH0_1                                                     │
00:00:10 #677 [Verbose] > │     let v5 : UH0 = UH0_0(9, v4)                                              │
00:00:10 #678 [Verbose] > │     let v6 : UH0 = UH0_0(7, v5)                                              │
00:00:10 #679 [Verbose] > │     let v7 : UH0 = UH0_0(5, v6)                                              │
00:00:10 #680 [Verbose] > │     let v8 : string = $"__expect / actual: %A{v3} / expected: %A{v7}"        │
00:00:10 #681 [Verbose] > │     ()                                                                       │
00:00:10 #682 [Verbose] > │ method0()                                                                    │
00:00:10 #683 [Verbose] > │                                                                              │
00:00:10 #684 [Verbose] > │                                                                              │
00:00:10 #685 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #686 [Verbose] >
00:00:10 #687 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #688 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #689 [Verbose] > │ ## zip                                                                       │
00:00:10 #690 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #691 [Verbose] >
00:00:10 #692 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #693 [Verbose] > inl zip xs ys =
00:00:10 #694 [Verbose] >     zip_with pair xs ys
00:00:10 #695 [Verbose] >
00:00:10 #696 [Verbose] > inl zip_ xs ys =
00:00:10 #697 [Verbose] >     zip_with_ pair xs ys
00:00:10 #698 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4389-8920-83217a92a760/main.spi
00:00:10 #699 [Verbose] >
00:00:10 #700 [Verbose] > ╭─[ 123.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #701 [Verbose] > │ ()                                                                           │
00:00:10 #702 [Verbose] > │                                                                              │
00:00:10 #703 [Verbose] > │                                                                              │
00:00:10 #704 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #705 [Verbose] >
00:00:10 #706 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #707 [Verbose] > // // test
00:00:10 #708 [Verbose] >
00:00:10 #709 [Verbose] > ([[ 1i32; 2; 3 ]], [[ 4i32; 5; 6 ]])
00:00:10 #710 [Verbose] > ||> zip
00:00:10 #711 [Verbose] > |> _equal [[ 1, 4; 2, 5; 3, 6 ]]
00:00:10 #712 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4401-0156-056a4141b7c8/main.spi
00:00:11 #713 [Verbose] >
00:00:11 #714 [Verbose] > ╭─[ 171.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #715 [Verbose] > │ type UH0 =                                                                   │
00:00:11 #716 [Verbose] > │     | UH0_0 of int32 * int32 * UH0                                           │
00:00:11 #717 [Verbose] > │     | UH0_1                                                                  │
00:00:11 #718 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:11 #719 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:11 #720 [Verbose] > │     let v1 : UH0 = UH0_0(3, 6, v0)                                           │
00:00:11 #721 [Verbose] > │     let v2 : UH0 = UH0_0(2, 5, v1)                                           │
00:00:11 #722 [Verbose] > │     let v3 : UH0 = UH0_0(1, 4, v2)                                           │
00:00:11 #723 [Verbose] > │     let v4 : UH0 = UH0_1                                                     │
00:00:11 #724 [Verbose] > │     let v5 : UH0 = UH0_0(3, 6, v4)                                           │
00:00:11 #725 [Verbose] > │     let v6 : UH0 = UH0_0(2, 5, v5)                                           │
00:00:11 #726 [Verbose] > │     let v7 : UH0 = UH0_0(1, 4, v6)                                           │
00:00:11 #727 [Verbose] > │     let v8 : string = $"__expect / actual: %A{v3} / expected: %A{v7}"        │
00:00:11 #728 [Verbose] > │     ()                                                                       │
00:00:11 #729 [Verbose] > │ method0()                                                                    │
00:00:11 #730 [Verbose] > │                                                                              │
00:00:11 #731 [Verbose] > │                                                                              │
00:00:11 #732 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #733 [Verbose] >
00:00:11 #734 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #735 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #736 [Verbose] > │ ## indexed                                                                   │
00:00:11 #737 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #738 [Verbose] >
00:00:11 #739 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #740 [Verbose] > inl indexed list =
00:00:11 #741 [Verbose] >     (([[]], 0), list)
00:00:11 #742 [Verbose] >     ||> listm.fold fun (acc, i) x =>
00:00:11 #743 [Verbose] >         (i, x) :: acc, i + 1
00:00:11 #744 [Verbose] >     |> fst
00:00:11 #745 [Verbose] >     |> listm.rev
00:00:11 #746 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4419-1903-16af505f375f/main.spi
00:00:11 #747 [Verbose] >
00:00:11 #748 [Verbose] > ╭─[ 128.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #749 [Verbose] > │ ()                                                                           │
00:00:11 #750 [Verbose] > │                                                                              │
00:00:11 #751 [Verbose] > │                                                                              │
00:00:11 #752 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #753 [Verbose] >
00:00:11 #754 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #755 [Verbose] > // // test
00:00:11 #756 [Verbose] >
00:00:11 #757 [Verbose] > listm.init 5i32 ((*) 2)
00:00:11 #758 [Verbose] > |> indexed
00:00:11 #759 [Verbose] > |> _equal [[ 0i32, 0; 1, 2; 2, 4; 3, 6; 4, 8 ]]
00:00:11 #760 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4431-3189-3365e5aece7a/main.spi
00:00:11 #761 [Verbose] >
00:00:11 #762 [Verbose] > ╭─[ 169.90ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #763 [Verbose] > │ type UH0 =                                                                   │
00:00:11 #764 [Verbose] > │     | UH0_0 of int32 * int32 * UH0                                           │
00:00:11 #765 [Verbose] > │     | UH0_1                                                                  │
00:00:11 #766 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:11 #767 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:11 #768 [Verbose] > │     let v1 : UH0 = UH0_0(4, 8, v0)                                           │
00:00:11 #769 [Verbose] > │     let v2 : UH0 = UH0_0(3, 6, v1)                                           │
00:00:11 #770 [Verbose] > │     let v3 : UH0 = UH0_0(2, 4, v2)                                           │
00:00:11 #771 [Verbose] > │     let v4 : UH0 = UH0_0(1, 2, v3)                                           │
00:00:11 #772 [Verbose] > │     let v5 : UH0 = UH0_0(0, 0, v4)                                           │
00:00:11 #773 [Verbose] > │     let v6 : UH0 = UH0_1                                                     │
00:00:11 #774 [Verbose] > │     let v7 : UH0 = UH0_0(4, 8, v6)                                           │
00:00:11 #775 [Verbose] > │     let v8 : UH0 = UH0_0(3, 6, v7)                                           │
00:00:11 #776 [Verbose] > │     let v9 : UH0 = UH0_0(2, 4, v8)                                           │
00:00:11 #777 [Verbose] > │     let v10 : UH0 = UH0_0(1, 2, v9)                                          │
00:00:11 #778 [Verbose] > │     let v11 : UH0 = UH0_0(0, 0, v10)                                         │
00:00:11 #779 [Verbose] > │     let v12 : string = $"__expect / actual: %A{v5} / expected: %A{v11}"      │
00:00:11 #780 [Verbose] > │     ()                                                                       │
00:00:11 #781 [Verbose] > │ method0()                                                                    │
00:00:11 #782 [Verbose] > │                                                                              │
00:00:11 #783 [Verbose] > │                                                                              │
00:00:11 #784 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #785 [Verbose] >
00:00:11 #786 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #787 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #788 [Verbose] > │ ## group_by                                                                  │
00:00:11 #789 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #790 [Verbose] >
00:00:11 #791 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #792 [Verbose] > inl group_by fn list =
00:00:11 #793 [Verbose] >     (list, [[]])
00:00:11 #794 [Verbose] >     ||> listm.foldBack fun x acc =>
00:00:11 #795 [Verbose] >         inl xk = fn x
00:00:11 #796 [Verbose] >         inl found, new_acc =
00:00:11 #797 [Verbose] >             ((false, [[]]), acc)
00:00:11 #798 [Verbose] >             ||> listm.fold fun (found, acc') (k, xs) =>
00:00:11 #799 [Verbose] >                 if k = xk
00:00:11 #800 [Verbose] >                 then true, (k, x :: xs) :: acc'
00:00:11 #801 [Verbose] >                 else found, (k, xs) :: acc'
00:00:11 #802 [Verbose] >         if found
00:00:11 #803 [Verbose] >         then new_acc
00:00:11 #804 [Verbose] >         else (xk, [[ x ]]) :: new_acc
00:00:11 #805 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4449-4913-4720a47a5b69/main.spi
00:00:11 #806 [Verbose] >
00:00:11 #807 [Verbose] > ╭─[ 134.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #808 [Verbose] > │ ()                                                                           │
00:00:11 #809 [Verbose] > │                                                                              │
00:00:11 #810 [Verbose] > │                                                                              │
00:00:11 #811 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #812 [Verbose] >
00:00:11 #813 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #814 [Verbose] > // // test
00:00:11 #815 [Verbose] >
00:00:11 #816 [Verbose] > listm.init 10i32 id
00:00:11 #817 [Verbose] > |> group_by (fun x => x % 2 = 0)
00:00:11 #818 [Verbose] > |> _equal [[ true, [[ 0; 2; 4; 6; 8 ]]; false, [[ 1; 3; 5; 7; 9 ]] ]]
00:00:11 #819 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4462-6267-6abc39382e15/main.spi
00:00:11 #820 [Verbose] >
00:00:11 #821 [Verbose] > ╭─[ 224.05ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #822 [Verbose] > │ type UH0 =                                                                   │
00:00:11 #823 [Verbose] > │     | UH0_0 of int32 * UH0                                                   │
00:00:11 #824 [Verbose] > │     | UH0_1                                                                  │
00:00:11 #825 [Verbose] > │ and UH1 =                                                                    │
00:00:11 #826 [Verbose] > │     | UH1_0 of bool * UH0 * UH1                                              │
00:00:11 #827 [Verbose] > │     | UH1_1                                                                  │
00:00:11 #828 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:11 #829 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:11 #830 [Verbose] > │     let v1 : UH0 = UH0_0(8, v0)                                              │
00:00:11 #831 [Verbose] > │     let v2 : UH0 = UH0_0(6, v1)                                              │
00:00:11 #832 [Verbose] > │     let v3 : UH0 = UH0_0(4, v2)                                              │
00:00:11 #833 [Verbose] > │     let v4 : UH0 = UH0_0(2, v3)                                              │
00:00:11 #834 [Verbose] > │     let v5 : UH0 = UH0_0(0, v4)                                              │
00:00:11 #835 [Verbose] > │     let v6 : UH0 = UH0_1                                                     │
00:00:11 #836 [Verbose] > │     let v7 : UH0 = UH0_0(9, v6)                                              │
00:00:11 #837 [Verbose] > │     let v8 : UH0 = UH0_0(7, v7)                                              │
00:00:11 #838 [Verbose] > │     let v9 : UH0 = UH0_0(5, v8)                                              │
00:00:11 #839 [Verbose] > │     let v10 : UH0 = UH0_0(3, v9)                                             │
00:00:11 #840 [Verbose] > │     let v11 : UH0 = UH0_0(1, v10)                                            │
00:00:11 #841 [Verbose] > │     let v12 : UH1 = UH1_1                                                    │
00:00:11 #842 [Verbose] > │     let v13 : UH1 = UH1_0(false, v11, v12)                                   │
00:00:11 #843 [Verbose] > │     let v14 : UH1 = UH1_0(true, v5, v13)                                     │
00:00:11 #844 [Verbose] > │     let v15 : UH0 = UH0_1                                                    │
00:00:11 #845 [Verbose] > │     let v16 : UH0 = UH0_0(8, v15)                                            │
00:00:11 #846 [Verbose] > │     let v17 : UH0 = UH0_0(6, v16)                                            │
00:00:11 #847 [Verbose] > │     let v18 : UH0 = UH0_0(4, v17)                                            │
00:00:11 #848 [Verbose] > │     let v19 : UH0 = UH0_0(2, v18)                                            │
00:00:11 #849 [Verbose] > │     let v20 : UH0 = UH0_0(0, v19)                                            │
00:00:11 #850 [Verbose] > │     let v21 : UH0 = UH0_1                                                    │
00:00:11 #851 [Verbose] > │     let v22 : UH0 = UH0_0(9, v21)                                            │
00:00:11 #852 [Verbose] > │     let v23 : UH0 = UH0_0(7, v22)                                            │
00:00:11 #853 [Verbose] > │     let v24 : UH0 = UH0_0(5, v23)                                            │
00:00:11 #854 [Verbose] > │     let v25 : UH0 = UH0_0(3, v24)                                            │
00:00:11 #855 [Verbose] > │     let v26 : UH0 = UH0_0(1, v25)                                            │
00:00:11 #856 [Verbose] > │     let v27 : UH1 = UH1_1                                                    │
00:00:11 #857 [Verbose] > │     let v28 : UH1 = UH1_0(false, v26, v27)                                   │
00:00:11 #858 [Verbose] > │     let v29 : UH1 = UH1_0(true, v20, v28)                                    │
00:00:11 #859 [Verbose] > │     let v30 : string = $"__expect / actual: %A{v14} / expected: %A{v29}"     │
00:00:11 #860 [Verbose] > │     ()                                                                       │
00:00:11 #861 [Verbose] > │ method0()                                                                    │
00:00:11 #862 [Verbose] > │                                                                              │
00:00:11 #863 [Verbose] > │                                                                              │
00:00:11 #864 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #865 [Verbose] >
00:00:11 #866 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #867 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #868 [Verbose] > │ ## forall'                                                                   │
00:00:11 #869 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #870 [Verbose] >
00:00:11 #871 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #872 [Verbose] > inl forall' fn (head :: tail) =
00:00:11 #873 [Verbose] >     (true, tail)
00:00:11 #874 [Verbose] >     ||> listm.fold fun acc x =>
00:00:11 #875 [Verbose] >         acc && x = head
00:00:11 #876 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4485-8573-8f278af2efe1/main.spi
00:00:11 #877 [Verbose] >
00:00:11 #878 [Verbose] > ╭─[ 133.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #879 [Verbose] > │ ()                                                                           │
00:00:11 #880 [Verbose] > │                                                                              │
00:00:11 #881 [Verbose] > │                                                                              │
00:00:11 #882 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #883 [Verbose] >
00:00:11 #884 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #885 [Verbose] > // // test
00:00:11 #886 [Verbose] >
00:00:11 #887 [Verbose] > [[ 1i32; 1; 1; 1; 1 ]]
00:00:11 #888 [Verbose] > |> forall' ((=) 1i32)
00:00:11 #889 [Verbose] > |> _equal true
00:00:11 #890 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4498-9879-9b0152073443/main.spi
00:00:11 #891 [Verbose] >
00:00:11 #892 [Verbose] > ╭─[ 122.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #893 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:11 #894 [Verbose] > │     let v0 : string = $"__expect / actual: %A{true} / expected: %A{true}"    │
00:00:11 #895 [Verbose] > │     ()                                                                       │
00:00:11 #896 [Verbose] > │ method0()                                                                    │
00:00:11 #897 [Verbose] > │                                                                              │
00:00:11 #898 [Verbose] > │                                                                              │
00:00:11 #899 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #900 [Verbose] >
00:00:11 #901 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #902 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #903 [Verbose] > │ ## last                                                                      │
00:00:11 #904 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #905 [Verbose] >
00:00:11 #906 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #907 [Verbose] > inl last list =
00:00:11 #908 [Verbose] >     list
00:00:11 #909 [Verbose] >     |> listm.rev
00:00:11 #910 [Verbose] >     |> item 0i32
00:00:12 #911 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4511-1121-1f6176e9a438/main.spi
00:00:12 #912 [Verbose] >
00:00:12 #913 [Verbose] > ╭─[ 120.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #914 [Verbose] > │ ()                                                                           │
00:00:12 #915 [Verbose] > │                                                                              │
00:00:12 #916 [Verbose] > │                                                                              │
00:00:12 #917 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #918 [Verbose] >
00:00:12 #919 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #920 [Verbose] > // // test
00:00:12 #921 [Verbose] >
00:00:12 #922 [Verbose] > listm.init 10i32 id
00:00:12 #923 [Verbose] > |> last
00:00:12 #924 [Verbose] > |> _equal 9
00:00:12 #925 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4523-2327-21d3b864fd47/main.spi
00:00:12 #926 [Verbose] >
00:00:12 #927 [Verbose] > ╭─[ 145.55ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #928 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:12 #929 [Verbose] > │     let v0 : string = $"__expect / actual: %A{9} / expected: %A{9}"          │
00:00:12 #930 [Verbose] > │     ()                                                                       │
00:00:12 #931 [Verbose] > │ method0()                                                                    │
00:00:12 #932 [Verbose] > │                                                                              │
00:00:12 #933 [Verbose] > │                                                                              │
00:00:12 #934 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #935 [Verbose] >
00:00:12 #936 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #937 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #938 [Verbose] > │ ## try_pick                                                                  │
00:00:12 #939 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #940 [Verbose] >
00:00:12 #941 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #942 [Verbose] > inl try_pick fn list =
00:00:12 #943 [Verbose] >     inl rec body fn = function
00:00:12 #944 [Verbose] >         | [[]] => None
00:00:12 #945 [Verbose] >         | x :: xs =>
00:00:12 #946 [Verbose] >             match fn x with
00:00:12 #947 [Verbose] >             | Some y => Some y
00:00:12 #948 [Verbose] >             | None => loop xs
00:00:12 #949 [Verbose] >     and inl loop list =
00:00:12 #950 [Verbose] >         if var_is list |> not
00:00:12 #951 [Verbose] >         then body fn list
00:00:12 #952 [Verbose] >         else
00:00:12 #953 [Verbose] >             inl fn = join fn
00:00:12 #954 [Verbose] >             inl list = dyn list
00:00:12 #955 [Verbose] >             join body fn list
00:00:12 #956 [Verbose] >     loop list
00:00:12 #957 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4538-3810-36674618b44f/main.spi
00:00:12 #958 [Verbose] >
00:00:12 #959 [Verbose] > ╭─[ 135.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #960 [Verbose] > │ ()                                                                           │
00:00:12 #961 [Verbose] > │                                                                              │
00:00:12 #962 [Verbose] > │                                                                              │
00:00:12 #963 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #964 [Verbose] >
00:00:12 #965 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #966 [Verbose] > // // test
00:00:12 #967 [Verbose] >
00:00:12 #968 [Verbose] > listm.init 10i32 id
00:00:12 #969 [Verbose] > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:00:12 #970 [Verbose] > |> _equal (Some 5i32)
00:00:12 #971 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-4551-5160-5c46d9b25b8d/main.spi
00:00:12 #972 [Verbose] >
00:00:12 #973 [Verbose] > ╭─[ 198.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #974 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:12 #975 [Verbose] > │     | US0_0                                                                  │
00:00:12 #976 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:12 #977 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:12 #978 [Verbose] > │     let v0 : US0 = US0_1(5)                                                  │
00:00:12 #979 [Verbose] > │     let v1 : US0 = US0_1(5)                                                  │
00:00:12 #980 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:12 #981 [Verbose] > │     ()                                                                       │
00:00:12 #982 [Verbose] > │ method0()                                                                    │
00:00:12 #983 [Verbose] > │                                                                              │
00:00:12 #984 [Verbose] > │                                                                              │
00:00:12 #985 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #986 [Verbose] > [NbConvertApp] Converting notebook listm'.dib.ipynb to html
00:00:13 #987 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:13 #988 [Verbose] >   validate(nb)
00:00:13 #989 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:13 #990 [Verbose] >   return _pygments_highlight(
00:00:14 #991 [Verbose] > [NbConvertApp] Writing 362449 bytes to listm'.dib.html
00:00:14 #992 [Debug] executeAsync / exitCode: 0 / output.Length: 63440
00:00:14 #993 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #15 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #16 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #17 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #18 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #19 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #20 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 benchmark.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #21 [Verbose] >
00:00:02 #22 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #23 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #24 [Verbose] > │ ## benchmark (Polyglot)                                                      │
00:00:02 #25 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #28 [Verbose] > // // test
00:00:02 #29 [Verbose] >
00:00:02 #30 [Verbose] > open testing
00:00:04 #31 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5159-5923-54e49864afee/main.spi
00:00:05 #32 [Verbose] >
00:00:05 #33 [Verbose] > ╭─[ 3.53s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #34 [Verbose] > │ ()                                                                           │
00:00:05 #35 [Verbose] > │                                                                              │
00:00:05 #36 [Verbose] > │                                                                              │
00:00:05 #37 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #38 [Verbose] >
00:00:05 #39 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #40 [Verbose] > inl (/@) x = listm'.(/@) x
00:00:05 #41 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5383-8334-844439d376a9/main.spi
00:00:06 #42 [Verbose] >
00:00:06 #43 [Verbose] > ╭─[ 150.40ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #44 [Verbose] > │ ()                                                                           │
00:00:06 #45 [Verbose] > │                                                                              │
00:00:06 #46 [Verbose] > │                                                                              │
00:00:06 #47 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #48 [Verbose] >
00:00:06 #49 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #50 [Verbose] > inl gc_collect () =
00:00:06 #51 [Verbose] >     run_target function
00:00:06 #52 [Verbose] >         | Fsharp => fun () => $"System.GC.Collect ()"
00:00:06 #53 [Verbose] >         | _ => fun () => ()
00:00:06 #54 [Verbose] >
00:00:06 #55 [Verbose] > inl printfn x =
00:00:06 #56 [Verbose] >     console.write_line x
00:00:06 #57 [Verbose] >
00:00:06 #58 [Verbose] > nominal stopwatch = $"System.Diagnostics.Stopwatch"
00:00:06 #59 [Verbose] >
00:00:06 #60 [Verbose] > inl stopwatch () : stopwatch =
00:00:06 #61 [Verbose] >     $"`stopwatch" ()
00:00:06 #62 [Verbose] >
00:00:06 #63 [Verbose] > inl stopwatch_elapsed_milliseconds (stopwatch : stopwatch) : i64 =
00:00:06 #64 [Verbose] >     $"!stopwatch.ElapsedMilliseconds"
00:00:06 #65 [Verbose] >
00:00:06 #66 [Verbose] > inl stopwatch_start (stopwatch : stopwatch) : () =
00:00:06 #67 [Verbose] >     $"!stopwatch.Start ()"
00:00:06 #68 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5398-9804-9799f37abb5b/main.spi
00:00:06 #69 [Verbose] >
00:00:06 #70 [Verbose] > ╭─[ 141.39ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #71 [Verbose] > │ ()                                                                           │
00:00:06 #72 [Verbose] > │                                                                              │
00:00:06 #73 [Verbose] > │                                                                              │
00:00:06 #74 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #75 [Verbose] >
00:00:06 #76 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #77 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #78 [Verbose] > │ ## test_case_result                                                          │
00:00:06 #79 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #80 [Verbose] >
00:00:06 #81 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #82 [Verbose] > type test_case_result =
00:00:06 #83 [Verbose] >     {
00:00:06 #84 [Verbose] >         Input : string
00:00:06 #85 [Verbose] >         Expected : string
00:00:06 #86 [Verbose] >         Result : string
00:00:06 #87 [Verbose] >         TimeList : a u64 i64
00:00:06 #88 [Verbose] >     }
00:00:06 #89 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5412-1221-1a056889bb7c/main.spi
00:00:06 #90 [Verbose] >
00:00:06 #91 [Verbose] > ╭─[ 155.67ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #92 [Verbose] > │ ()                                                                           │
00:00:06 #93 [Verbose] > │                                                                              │
00:00:06 #94 [Verbose] > │                                                                              │
00:00:06 #95 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #96 [Verbose] >
00:00:06 #97 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #98 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #99 [Verbose] > │ ## run                                                                       │
00:00:06 #100 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #101 [Verbose] >
00:00:06 #102 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #103 [Verbose] > inl run forall input expected.
00:00:06 #104 [Verbose] >     count
00:00:06 #105 [Verbose] >     (solutions : list (string * (input -> expected)))
00:00:06 #106 [Verbose] >     ((input, expected) : (input * expected))
00:00:06 #107 [Verbose] >     : test_case_result
00:00:06 #108 [Verbose] >     =
00:00:06 #109 [Verbose] >     inl input_str = input |> sm'.format_debug
00:00:06 #110 [Verbose] >
00:00:06 #111 [Verbose] >     printfn ""
00:00:06 #112 [Verbose] >     printfn ($"$\"Solution: {!input_str}  \"" : string)
00:00:06 #113 [Verbose] >
00:00:06 #114 [Verbose] >     inl performance_invoke (fn : () -> expected) =
00:00:06 #115 [Verbose] >         gc_collect ()
00:00:06 #116 [Verbose] >         inl stopwatch = stopwatch ()
00:00:06 #117 [Verbose] >         stopwatch |> stopwatch_start
00:00:06 #118 [Verbose] >         inl time1 = stopwatch |> stopwatch_elapsed_milliseconds
00:00:06 #119 [Verbose] >         inl result : expected =
00:00:06 #120 [Verbose] >             am'.init_series 0 count 1i32
00:00:06 #121 [Verbose] >             |> am'.parallel_map fun _n => fn ()
00:00:06 #122 [Verbose] >             |> am'.last
00:00:06 #123 [Verbose] >         inl time2 = (stopwatch |> stopwatch_elapsed_milliseconds) - time1
00:00:06 #124 [Verbose] >         result, time2
00:00:06 #125 [Verbose] >
00:00:06 #126 [Verbose] >     inl results_with_time : a u64 _ =
00:00:06 #127 [Verbose] >         solutions
00:00:06 #128 [Verbose] >         |> listm'.indexed
00:00:06 #129 [Verbose] >         |> listm.toArray
00:00:06 #130 [Verbose] >         |> am.map fun ((i : i32), (test_name, solution)) =>
00:00:06 #131 [Verbose] >             inl result, time = performance_invoke fun () => solution input
00:00:06 #132 [Verbose] >             printfn ($"$\"Test case {!i + 1}. {!test_name}. Time: {!time}  \"" :
00:00:06 #133 [Verbose] > string)
00:00:06 #134 [Verbose] >             result, time
00:00:06 #135 [Verbose] >
00:00:06 #136 [Verbose] >     match results_with_time |> am.map fst with
00:00:06 #137 [Verbose] >     | array when length array <= 1 => ()
00:00:06 #138 [Verbose] >     | array when array |> am.forall' ((=) (index array 0)) => ()
00:00:06 #139 [Verbose] >     | results => failwith ($"$\"Challenge error: {!results}\"" : string)
00:00:06 #140 [Verbose] >
00:00:06 #141 [Verbose] >     {
00:00:06 #142 [Verbose] >         Input = input_str
00:00:06 #143 [Verbose] >         Expected = expected |> sm'.format_debug
00:00:06 #144 [Verbose] >         Result = results_with_time |> am.map fst |> fun array => index array 0
00:00:06 #145 [Verbose] > |> sm'.format_debug
00:00:06 #146 [Verbose] >         TimeList = results_with_time |> am.map snd
00:00:06 #147 [Verbose] >     }
00:00:06 #148 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5428-2865-263f15018d7a/main.spi
00:00:06 #149 [Verbose] >
00:00:06 #150 [Verbose] > ╭─[ 169.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #151 [Verbose] > │ ()                                                                           │
00:00:06 #152 [Verbose] > │                                                                              │
00:00:06 #153 [Verbose] > │                                                                              │
00:00:06 #154 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #155 [Verbose] >
00:00:06 #156 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #157 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #158 [Verbose] > │ ## run_all                                                                   │
00:00:06 #159 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #160 [Verbose] >
00:00:06 #161 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #162 [Verbose] > inl run_all forall input expected.
00:00:06 #163 [Verbose] >     test_name
00:00:06 #164 [Verbose] >     count
00:00:06 #165 [Verbose] >     (solutions : list (string * (input -> expected)))
00:00:06 #166 [Verbose] >     test_cases
00:00:06 #167 [Verbose] >     =
00:00:06 #168 [Verbose] >     printfn ""
00:00:06 #169 [Verbose] >     printfn ""
00:00:06 #170 [Verbose] >     printfn ($"$\"Test: {!test_name}\"" : string)
00:00:06 #171 [Verbose] >     test_cases
00:00:06 #172 [Verbose] >     |> listm.toArray
00:00:06 #173 [Verbose] >     |> am.map (run count solutions)
00:00:06 #174 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5444-4499-4adc413d8452/main.spi
00:00:06 #175 [Verbose] >
00:00:06 #176 [Verbose] > ╭─[ 138.74ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #177 [Verbose] > │ ()                                                                           │
00:00:06 #178 [Verbose] > │                                                                              │
00:00:06 #179 [Verbose] > │                                                                              │
00:00:06 #180 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #181 [Verbose] >
00:00:06 #182 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #183 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #184 [Verbose] > │ ## sort_result_list                                                          │
00:00:06 #185 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #186 [Verbose] >
00:00:06 #187 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #188 [Verbose] > inl sort_result_list results =
00:00:06 #189 [Verbose] >     inl table =
00:00:06 #190 [Verbose] >         inl rows =
00:00:06 #191 [Verbose] >             results
00:00:06 #192 [Verbose] >             |> am.map fun (result : test_case_result) =>
00:00:06 #193 [Verbose] >                 inl best =
00:00:06 #194 [Verbose] >                     result.TimeList
00:00:06 #195 [Verbose] >                     |> am'.indexed
00:00:06 #196 [Verbose] >                     |> am.map fun (i, time) =>
00:00:06 #197 [Verbose] >                         i + 1i64, time
00:00:06 #198 [Verbose] >                     |> am'.sort_by snd
00:00:06 #199 [Verbose] >                     |> fun array => index array 0i32
00:00:06 #200 [Verbose] >                     |> sm'.format_debug
00:00:06 #201 [Verbose] >                 inl row =
00:00:06 #202 [Verbose] >                     [[
00:00:06 #203 [Verbose] >                         result.Input
00:00:06 #204 [Verbose] >                         result.Expected
00:00:06 #205 [Verbose] >                         result.Result
00:00:06 #206 [Verbose] >                         best
00:00:06 #207 [Verbose] >                     ]]
00:00:06 #208 [Verbose] >                 inl color : option console.console_color =
00:00:06 #209 [Verbose] >                     open console
00:00:06 #210 [Verbose] >                     match result.Expected = result.Result with
00:00:06 #211 [Verbose] >                     | true => Some $"`console_color.DarkGreen"
00:00:06 #212 [Verbose] >                     | false => Some $"`console_color.DarkRed"
00:00:06 #213 [Verbose] >                 row, color
00:00:06 #214 [Verbose] >
00:00:06 #215 [Verbose] >         inl header =
00:00:06 #216 [Verbose] >             [[
00:00:06 #217 [Verbose] >                 [[
00:00:06 #218 [Verbose] >                     "Input"
00:00:06 #219 [Verbose] >                     "Expected"
00:00:06 #220 [Verbose] >                     "Result"
00:00:06 #221 [Verbose] >                     "Best"
00:00:06 #222 [Verbose] >                 ]]
00:00:06 #223 [Verbose] >                 [[
00:00:06 #224 [Verbose] >                     "---"
00:00:06 #225 [Verbose] >                     "---"
00:00:06 #226 [Verbose] >                     "---"
00:00:06 #227 [Verbose] >                     "---"
00:00:06 #228 [Verbose] >                 ]]
00:00:06 #229 [Verbose] >             ]]
00:00:06 #230 [Verbose] >             |> listm.map fun row => row, None
00:00:06 #231 [Verbose] >             |> listm.toArray
00:00:06 #232 [Verbose] >         rows |> am.append header
00:00:06 #233 [Verbose] >
00:00:06 #234 [Verbose] >     inl formattedTable =
00:00:06 #235 [Verbose] >         inl lengthMap : mapm.map i32 i64 =
00:00:06 #236 [Verbose] >             table
00:00:06 #237 [Verbose] >             |> am.map (fst >> listm.toArray)
00:00:06 #238 [Verbose] >             |> am'.transpose
00:00:06 #239 [Verbose] >             |> am.map fun column =>
00:00:06 #240 [Verbose] >                 column
00:00:06 #241 [Verbose] >                 |> am.map sm.length
00:00:06 #242 [Verbose] >                 |> am'.sort_descending
00:00:06 #243 [Verbose] >                 |> am'.try_item 0i32
00:00:06 #244 [Verbose] >                 |> optionm'.default_value 0i64
00:00:06 #245 [Verbose] >             |> am'.indexed
00:00:06 #246 [Verbose] >             |> fun (x : a i32 _) => x
00:00:06 #247 [Verbose] >             |> mapm.of_array
00:00:06 #248 [Verbose] >         table
00:00:06 #249 [Verbose] >         |> am.map fun (row, color) =>
00:00:06 #250 [Verbose] >             inl newRow =
00:00:06 #251 [Verbose] >                 row
00:00:06 #252 [Verbose] >                 |> listm'.indexed
00:00:06 #253 [Verbose] >                 |> listm.map fun (i, cell) =>
00:00:06 #254 [Verbose] >                     cell |> sm'.pad_right (lengthMap |> mapm.item i |> conv)
00:00:06 #255 [Verbose] >                 |> listm.toArray
00:00:06 #256 [Verbose] >             newRow, color
00:00:06 #257 [Verbose] >
00:00:06 #258 [Verbose] >     printfn ""
00:00:06 #259 [Verbose] >     formattedTable
00:00:06 #260 [Verbose] >     |> am.iter fun ((row : a i32 string), color) =>
00:00:06 #261 [Verbose] >         match color with
00:00:06 #262 [Verbose] >         | Some color => color |> console.set_foreground_color
00:00:06 #263 [Verbose] >         | None => console.reset_color ()
00:00:06 #264 [Verbose] >
00:00:06 #265 [Verbose] >         printfn (row |> sm'.join' "\t| ")
00:00:06 #266 [Verbose] >
00:00:06 #267 [Verbose] >         console.reset_color ()
00:00:06 #268 [Verbose] >
00:00:06 #269 [Verbose] >     inl averages : a u64 _ =
00:00:06 #270 [Verbose] >         results
00:00:06 #271 [Verbose] >         |> am.map fun result =>
00:00:06 #272 [Verbose] >             result.TimeList
00:00:06 #273 [Verbose] >             |> am.map ($"float" : i64 -> f64)
00:00:06 #274 [Verbose] >         |> am'.transpose
00:00:06 #275 [Verbose] >         |> am.map am'.average
00:00:06 #276 [Verbose] >         |> am.map ($"int64" : f64 -> i64)
00:00:06 #277 [Verbose] >         |> am'.indexed
00:00:06 #278 [Verbose] >
00:00:06 #279 [Verbose] >     printfn ""
00:00:06 #280 [Verbose] >     printfn "Average Ranking  "
00:00:06 #281 [Verbose] >     averages
00:00:06 #282 [Verbose] >     |> am'.sort_by snd
00:00:06 #283 [Verbose] >     |> am.iter fun ((i : i32), avg) =>
00:00:06 #284 [Verbose] >         printfn ($"$\"Test case %d{!i + 1}. Average Time: %A{!avg}  \"" :
00:00:06 #285 [Verbose] > string)
00:00:06 #286 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5459-5910-5f561320beb5/main.spi
00:00:06 #287 [Verbose] >
00:00:06 #288 [Verbose] > ╭─[ 146.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #289 [Verbose] > │ ()                                                                           │
00:00:06 #290 [Verbose] > │                                                                              │
00:00:06 #291 [Verbose] > │                                                                              │
00:00:06 #292 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #293 [Verbose] >
00:00:06 #294 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #295 [Verbose] > // // test
00:00:06 #296 [Verbose] >
00:00:06 #297 [Verbose] > inl is_fast () =
00:00:06 #298 [Verbose] >     false
00:00:06 #299 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5473-7362-78fbd4056c6a/main.spi
00:00:06 #300 [Verbose] >
00:00:06 #301 [Verbose] > ╭─[ 135.23ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #302 [Verbose] > │ ()                                                                           │
00:00:06 #303 [Verbose] > │                                                                              │
00:00:06 #304 [Verbose] > │                                                                              │
00:00:06 #305 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #306 [Verbose] >
00:00:06 #307 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #308 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #309 [Verbose] > │ ## empty2Tests                                                               │
00:00:06 #310 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #311 [Verbose] >
00:00:06 #312 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #313 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #314 [Verbose] > │ Test: Empty2                                                                 │
00:00:06 #315 [Verbose] > │                                                                              │
00:00:06 #316 [Verbose] > │ Solution: (a, a)                                                             │
00:00:06 #317 [Verbose] > │ Test case 1. A. Time: 59L                                                    │
00:00:06 #318 [Verbose] > │                                                                              │
00:00:06 #319 [Verbose] > │ Solution: (a, a)                                                             │
00:00:06 #320 [Verbose] > │ Test case 1. A. Time: 53L                                                    │
00:00:06 #321 [Verbose] > │                                                                              │
00:00:06 #322 [Verbose] > │ Input   | Expected        | Result  | Best                                   │
00:00:06 #323 [Verbose] > │ ---     | ---             | ---     | ---                                    │
00:00:06 #324 [Verbose] > │ (a, a)  | a               | a       | (1, 59)                                │
00:00:06 #325 [Verbose] > │ (a, a)  | a               | a       | (1, 53)                                │
00:00:06 #326 [Verbose] > │                                                                              │
00:00:06 #327 [Verbose] > │ Averages                                                                     │
00:00:06 #328 [Verbose] > │ Test case 1. Average Time: 56L                                               │
00:00:06 #329 [Verbose] > │                                                                              │
00:00:06 #330 [Verbose] > │ Ranking                                                                      │
00:00:06 #331 [Verbose] > │ Test case 1. Average Time: 56L                                               │
00:00:06 #332 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #333 [Verbose] >
00:00:06 #334 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #335 [Verbose] > // // test
00:00:06 #336 [Verbose] >
00:00:06 #337 [Verbose] > inl get_solutions () =
00:00:06 #338 [Verbose] >     [[
00:00:06 #339 [Verbose] >         "A",
00:00:06 #340 [Verbose] >         fun (a, _b) =>
00:00:06 #341 [Verbose] >             a
00:00:06 #342 [Verbose] >
00:00:06 #343 [Verbose] >         "B",
00:00:06 #344 [Verbose] >         fun (_a, b) =>
00:00:06 #345 [Verbose] >             b
00:00:06 #346 [Verbose] >     ]]
00:00:06 #347 [Verbose] >
00:00:06 #348 [Verbose] > inl rec empty_2_tests () =
00:00:06 #349 [Verbose] >     inl test_cases = [[
00:00:06 #350 [Verbose] >         ("a", "a"), "a"
00:00:06 #351 [Verbose] >         ("b", "b"), "b"
00:00:06 #352 [Verbose] >     ]]
00:00:06 #353 [Verbose] >
00:00:06 #354 [Verbose] >     inl solutions = get_solutions ()
00:00:06 #355 [Verbose] >
00:00:06 #356 [Verbose] >     // inl is_fast () = true
00:00:06 #357 [Verbose] >
00:00:06 #358 [Verbose] >     inl count =
00:00:06 #359 [Verbose] >         if is_fast ()
00:00:06 #360 [Verbose] >         then 1000i32
00:00:06 #361 [Verbose] >         else 2000000i32
00:00:06 #362 [Verbose] >
00:00:06 #363 [Verbose] >     run_all (nameof empty_2_tests) count solutions test_cases
00:00:06 #364 [Verbose] >     |> sort_result_list
00:00:06 #365 [Verbose] >
00:00:06 #366 [Verbose] > empty_2_tests ()
00:00:06 #367 [Verbose] > Building /tmp/!dotnet-repl/20240226-2106-5487-8758-828012dfc02a/main.spi
00:00:13 #368 [Verbose] >
00:00:13 #369 [Verbose] > ╭─[ 6.86s - stdout ]───────────────────────────────────────────────────────────╮
00:00:13 #370 [Verbose] > │ type UH0 =                                                                   │
00:00:13 #371 [Verbose] > │     | UH0_0 of string * string * string * UH0                                │
00:00:13 #372 [Verbose] > │     | UH0_1                                                                  │
00:00:13 #373 [Verbose] > │ and Mut0 = {mutable l0 : uint64}                                             │
00:00:13 #374 [Verbose] > │ and UH1 =                                                                    │
00:00:13 #375 [Verbose] > │     | UH1_0 of int32 * string * (struct (string * string) -> string) * UH1   │
00:00:13 #376 [Verbose] > │     | UH1_1                                                                  │
00:00:13 #377 [Verbose] > │ and Mut1 = {mutable l0 : int32}                                              │
00:00:13 #378 [Verbose] > │ and UH2 =                                                                    │
00:00:13 #379 [Verbose] > │     | UH2_0 of string * UH2                                                  │
00:00:13 #380 [Verbose] > │     | UH2_1                                                                  │
00:00:13 #381 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:13 #382 [Verbose] > │     | US0_0                                                                  │
00:00:13 #383 [Verbose] > │     | US0_1 of f1_0 : System.ConsoleColor                                    │
00:00:13 #384 [Verbose] > │ and UH3 =                                                                    │
00:00:13 #385 [Verbose] > │     | UH3_0 of int64 * int64 * UH3                                           │
00:00:13 #386 [Verbose] > │     | UH3_1                                                                  │
00:00:13 #387 [Verbose] > │ and Mut2 = {mutable l0 : uint64; mutable l1 : UH3; mutable l2 : int64}       │
00:00:13 #388 [Verbose] > │ and UH4 =                                                                    │
00:00:13 #389 [Verbose] > │     | UH4_0 of UH2 * US0 * UH4                                               │
00:00:13 #390 [Verbose] > │     | UH4_1                                                                  │
00:00:13 #391 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:13 #392 [Verbose] > │     | US1_0                                                                  │
00:00:13 #393 [Verbose] > │     | US1_1 of f1_0 : int64                                                  │
00:00:13 #394 [Verbose] > │ and UH5 =                                                                    │
00:00:13 #395 [Verbose] > │     | UH5_0 of int32 * int64 * UH5                                           │
00:00:13 #396 [Verbose] > │     | UH5_1                                                                  │
00:00:13 #397 [Verbose] > │ and Mut3 = {mutable l0 : uint64; mutable l1 : UH5; mutable l2 : int32}       │
00:00:13 #398 [Verbose] > │ and UH6 =                                                                    │
00:00:13 #399 [Verbose] > │     | UH6_0 of int32 * string * UH6                                          │
00:00:13 #400 [Verbose] > │     | UH6_1                                                                  │
00:00:13 #401 [Verbose] > │ let rec method2 (v0 : UH0, v1 : uint64) : uint64 =                           │
00:00:13 #402 [Verbose] > │     match v0 with                                                            │
00:00:13 #403 [Verbose] > │     | UH0_0(v2, v3, v4, v5) -> (* Cons *)                                    │
00:00:13 #404 [Verbose] > │         let v6 : uint64 = v1 + 1UL                                           │
00:00:13 #405 [Verbose] > │         method2(v5, v6)                                                      │
00:00:13 #406 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:13 #407 [Verbose] > │         v1                                                                   │
00:00:13 #408 [Verbose] > │ and method3 (v0 : (struct (string * string * string) []), v1 : UH0, v2 :     │
00:00:13 #409 [Verbose] > │ uint64) : uint64 =                                                           │
00:00:13 #410 [Verbose] > │     match v1 with                                                            │
00:00:13 #411 [Verbose] > │     | UH0_0(v3, v4, v5, v6) -> (* Cons *)                                    │
00:00:13 #412 [Verbose] > │         v0.[int v2] <- struct (v3, v4, v5)                                   │
00:00:13 #413 [Verbose] > │         let v7 : uint64 = v2 + 1UL                                           │
00:00:13 #414 [Verbose] > │         method3(v0, v6, v7)                                                  │
00:00:13 #415 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:13 #416 [Verbose] > │         v2                                                                   │
00:00:13 #417 [Verbose] > │ and method1 (v0 : UH0) : (struct (string * string * string) []) =            │
00:00:13 #418 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:13 #419 [Verbose] > │     let v2 : uint64 = method2(v0, v1)                                        │
00:00:13 #420 [Verbose] > │     let v3 : (struct (string * string * string) []) =                        │
00:00:13 #421 [Verbose] > │ Array.zeroCreate<struct (string * string * string)>                          │
00:00:13 #422 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:00:13 #423 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:13 #424 [Verbose] > │     let v5 : uint64 = method3(v3, v0, v4)                                    │
00:00:13 #425 [Verbose] > │     v3                                                                       │
00:00:13 #426 [Verbose] > │ and method4 (v0 : uint64, v1 : Mut0) : bool =                                │
00:00:13 #427 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:00:13 #428 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:13 #429 [Verbose] > │     v3                                                                       │
00:00:13 #430 [Verbose] > │ and closure1 () struct (v0 : string, v1 : string) : string =                 │
00:00:13 #431 [Verbose] > │     v0                                                                       │
00:00:13 #432 [Verbose] > │ and closure2 () struct (v0 : string, v1 : string) : string =                 │
00:00:13 #433 [Verbose] > │     v1                                                                       │
00:00:13 #434 [Verbose] > │ and method6 (v0 : UH1, v1 : uint64) : uint64 =                               │
00:00:13 #435 [Verbose] > │     match v0 with                                                            │
00:00:13 #436 [Verbose] > │     | UH1_0(v2, v3, v4, v5) -> (* Cons *)                                    │
00:00:13 #437 [Verbose] > │         let v6 : uint64 = v1 + 1UL                                           │
00:00:13 #438 [Verbose] > │         method6(v5, v6)                                                      │
00:00:13 #439 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:13 #440 [Verbose] > │         v1                                                                   │
00:00:13 #441 [Verbose] > │ and method7 (v0 : (struct (int32 * string * (struct (string * string) ->     │
00:00:13 #442 [Verbose] > │ string)) []), v1 : UH1, v2 : uint64) : uint64 =                              │
00:00:13 #443 [Verbose] > │     match v1 with                                                            │
00:00:13 #444 [Verbose] > │     | UH1_0(v3, v4, v5, v6) -> (* Cons *)                                    │
00:00:13 #445 [Verbose] > │         v0.[int v2] <- struct (v3, v4, v5)                                   │
00:00:13 #446 [Verbose] > │         let v7 : uint64 = v2 + 1UL                                           │
00:00:13 #447 [Verbose] > │         method7(v0, v6, v7)                                                  │
00:00:13 #448 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:13 #449 [Verbose] > │         v2                                                                   │
00:00:13 #450 [Verbose] > │ and method5 (v0 : UH1) : (struct (int32 * string * (struct (string * string) │
00:00:13 #451 [Verbose] > │ -> string)) []) =                                                            │
00:00:13 #452 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:13 #453 [Verbose] > │     let v2 : uint64 = method6(v0, v1)                                        │
00:00:13 #454 [Verbose] > │     let v3 : (struct (int32 * string * (struct (string * string) -> string)) │
00:00:13 #455 [Verbose] > │ []) = Array.zeroCreate<struct (int32 * string * (struct (string * string) -> │
00:00:13 #456 [Verbose] > │ string))> (System.Convert.ToInt32(v2))                                       │
00:00:13 #457 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:13 #458 [Verbose] > │     let v5 : uint64 = method7(v3, v0, v4)                                    │
00:00:13 #459 [Verbose] > │     v3                                                                       │
00:00:13 #460 [Verbose] > │ and method8 (v0 : Mut1) : bool =                                             │
00:00:13 #461 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:13 #462 [Verbose] > │     let v2 : bool = v1 < 2000001                                             │
00:00:13 #463 [Verbose] > │     v2                                                                       │
00:00:13 #464 [Verbose] > │ and closure3 (v0 : string, v1 : string, v2 : (struct (string * string) ->    │
00:00:13 #465 [Verbose] > │ string)) (v3 : int32) : string =                                             │
00:00:13 #466 [Verbose] > │     v2 struct (v0, v1)                                                       │
00:00:13 #467 [Verbose] > │ and method9 (v0 : string, v1 : (string []), v2 : uint64) : bool =            │
00:00:13 #468 [Verbose] > │     let v3 : uint64 = System.Convert.ToUInt64 v1.Length                      │
00:00:13 #469 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:00:13 #470 [Verbose] > │     if v4 then                                                               │
00:00:13 #471 [Verbose] > │         let v5 : string = v1.[int v2]                                        │
00:00:13 #472 [Verbose] > │         let v6 : bool = v0 = v5                                              │
00:00:13 #473 [Verbose] > │         if v6 then                                                           │
00:00:13 #474 [Verbose] > │             let v7 : uint64 = v2 + 1UL                                       │
00:00:13 #475 [Verbose] > │             method9(v0, v1, v7)                                              │
00:00:13 #476 [Verbose] > │         else                                                                 │
00:00:13 #477 [Verbose] > │             false                                                            │
00:00:13 #478 [Verbose] > │     else                                                                     │
00:00:13 #479 [Verbose] > │         true                                                                 │
00:00:13 #480 [Verbose] > │ and method10 (v0 : uint64, v1 : Mut2) : bool =                               │
00:00:13 #481 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:00:13 #482 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:13 #483 [Verbose] > │     v3                                                                       │
00:00:13 #484 [Verbose] > │ and method11 (v0 : UH3, v1 : UH3) : UH3 =                                    │
00:00:13 #485 [Verbose] > │     match v0 with                                                            │
00:00:13 #486 [Verbose] > │     | UH3_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:13 #487 [Verbose] > │         let v5 : UH3 = UH3_0(v2, v3, v1)                                     │
00:00:13 #488 [Verbose] > │         method11(v4, v5)                                                     │
00:00:13 #489 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:00:13 #490 [Verbose] > │         v1                                                                   │
00:00:13 #491 [Verbose] > │ and method13 (v0 : UH3, v1 : int32) : int32 =                                │
00:00:13 #492 [Verbose] > │     match v0 with                                                            │
00:00:13 #493 [Verbose] > │     | UH3_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:13 #494 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:00:13 #495 [Verbose] > │         method13(v4, v5)                                                     │
00:00:13 #496 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:00:13 #497 [Verbose] > │         v1                                                                   │
00:00:13 #498 [Verbose] > │ and method14 (v0 : (struct (int64 * int64) []), v1 : UH3, v2 : int32) :      │
00:00:13 #499 [Verbose] > │ int32 =                                                                      │
00:00:13 #500 [Verbose] > │     match v1 with                                                            │
00:00:13 #501 [Verbose] > │     | UH3_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:13 #502 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:13 #503 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:00:13 #504 [Verbose] > │         method14(v0, v5, v6)                                                 │
00:00:13 #505 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:00:13 #506 [Verbose] > │         v2                                                                   │
00:00:13 #507 [Verbose] > │ and method12 (v0 : UH3) : (struct (int64 * int64) []) =                      │
00:00:13 #508 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:13 #509 [Verbose] > │     let v2 : int32 = method13(v0, v1)                                        │
00:00:13 #510 [Verbose] > │     let v3 : (struct (int64 * int64) []) = Array.zeroCreate<struct (int64 *  │
00:00:13 #511 [Verbose] > │ int64)> (v2)                                                                 │
00:00:13 #512 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:13 #513 [Verbose] > │     let v5 : int32 = method14(v3, v0, v4)                                    │
00:00:13 #514 [Verbose] > │     v3                                                                       │
00:00:13 #515 [Verbose] > │ and method15 (v0 : int32, v1 : Mut1) : bool =                                │
00:00:13 #516 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:13 #517 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:13 #518 [Verbose] > │     v3                                                                       │
00:00:13 #519 [Verbose] > │ and closure4 () struct (v0 : int64, v1 : int64) : int64 =                    │
00:00:13 #520 [Verbose] > │     v1                                                                       │
00:00:13 #521 [Verbose] > │ and method17 (v0 : UH4, v1 : uint64) : uint64 =                              │
00:00:13 #522 [Verbose] > │     match v0 with                                                            │
00:00:13 #523 [Verbose] > │     | UH4_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:13 #524 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:00:13 #525 [Verbose] > │         method17(v4, v5)                                                     │
00:00:13 #526 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:13 #527 [Verbose] > │         v1                                                                   │
00:00:13 #528 [Verbose] > │ and method18 (v0 : (struct (UH2 * US0) []), v1 : UH4, v2 : uint64) : uint64  │
00:00:13 #529 [Verbose] > │ =                                                                            │
00:00:13 #530 [Verbose] > │     match v1 with                                                            │
00:00:13 #531 [Verbose] > │     | UH4_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:13 #532 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:13 #533 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:00:13 #534 [Verbose] > │         method18(v0, v5, v6)                                                 │
00:00:13 #535 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:13 #536 [Verbose] > │         v2                                                                   │
00:00:13 #537 [Verbose] > │ and method16 (v0 : UH4) : (struct (UH2 * US0) []) =                          │
00:00:13 #538 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:13 #539 [Verbose] > │     let v2 : uint64 = method17(v0, v1)                                       │
00:00:13 #540 [Verbose] > │     let v3 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)>  │
00:00:13 #541 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:00:13 #542 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:13 #543 [Verbose] > │     let v5 : uint64 = method18(v3, v0, v4)                                   │
00:00:13 #544 [Verbose] > │     v3                                                                       │
00:00:13 #545 [Verbose] > │ and method20 (v0 : UH2, v1 : uint64) : uint64 =                              │
00:00:13 #546 [Verbose] > │     match v0 with                                                            │
00:00:13 #547 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:00:13 #548 [Verbose] > │         let v4 : uint64 = v1 + 1UL                                           │
00:00:13 #549 [Verbose] > │         method20(v3, v4)                                                     │
00:00:13 #550 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:13 #551 [Verbose] > │         v1                                                                   │
00:00:13 #552 [Verbose] > │ and method21 (v0 : (string []), v1 : UH2, v2 : uint64) : uint64 =            │
00:00:13 #553 [Verbose] > │     match v1 with                                                            │
00:00:13 #554 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:00:13 #555 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:13 #556 [Verbose] > │         let v5 : uint64 = v2 + 1UL                                           │
00:00:13 #557 [Verbose] > │         method21(v0, v4, v5)                                                 │
00:00:13 #558 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:13 #559 [Verbose] > │         v2                                                                   │
00:00:13 #560 [Verbose] > │ and method19 (v0 : UH2) : (string []) =                                      │
00:00:13 #561 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:13 #562 [Verbose] > │     let v2 : uint64 = method20(v0, v1)                                       │
00:00:13 #563 [Verbose] > │     let v3 : (string []) = Array.zeroCreate<string>                          │
00:00:13 #564 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:00:13 #565 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:13 #566 [Verbose] > │     let v5 : uint64 = method21(v3, v0, v4)                                   │
00:00:13 #567 [Verbose] > │     v3                                                                       │
00:00:13 #568 [Verbose] > │ and closure5 () (v0 : int64) : US1 =                                         │
00:00:13 #569 [Verbose] > │     US1_1(v0)                                                                │
00:00:13 #570 [Verbose] > │ and method22 (v0 : uint64, v1 : Mut3) : bool =                               │
00:00:13 #571 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:00:13 #572 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:13 #573 [Verbose] > │     v3                                                                       │
00:00:13 #574 [Verbose] > │ and method23 (v0 : UH5, v1 : UH5) : UH5 =                                    │
00:00:13 #575 [Verbose] > │     match v0 with                                                            │
00:00:13 #576 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:13 #577 [Verbose] > │         let v5 : UH5 = UH5_0(v2, v3, v1)                                     │
00:00:13 #578 [Verbose] > │         method23(v4, v5)                                                     │
00:00:13 #579 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:13 #580 [Verbose] > │         v1                                                                   │
00:00:13 #581 [Verbose] > │ and method25 (v0 : UH5, v1 : int32) : int32 =                                │
00:00:13 #582 [Verbose] > │     match v0 with                                                            │
00:00:13 #583 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:13 #584 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:00:13 #585 [Verbose] > │         method25(v4, v5)                                                     │
00:00:13 #586 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:13 #587 [Verbose] > │         v1                                                                   │
00:00:13 #588 [Verbose] > │ and method26 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : int32) :      │
00:00:13 #589 [Verbose] > │ int32 =                                                                      │
00:00:13 #590 [Verbose] > │     match v1 with                                                            │
00:00:13 #591 [Verbose] > │     | UH5_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:13 #592 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:13 #593 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:00:13 #594 [Verbose] > │         method26(v0, v5, v6)                                                 │
00:00:13 #595 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:13 #596 [Verbose] > │         v2                                                                   │
00:00:13 #597 [Verbose] > │ and method24 (v0 : UH5) : (struct (int32 * int64) []) =                      │
00:00:13 #598 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:13 #599 [Verbose] > │     let v2 : int32 = method25(v0, v1)                                        │
00:00:13 #600 [Verbose] > │     let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 *  │
00:00:13 #601 [Verbose] > │ int64)> (v2)                                                                 │
00:00:13 #602 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:13 #603 [Verbose] > │     let v5 : int32 = method26(v3, v0, v4)                                    │
00:00:13 #604 [Verbose] > │     v3                                                                       │
00:00:13 #605 [Verbose] > │ and method27 (v0 : UH2, v1 : UH6, v2 : int32) : struct (UH6 * int32) =       │
00:00:13 #606 [Verbose] > │     match v0 with                                                            │
00:00:13 #607 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:00:13 #608 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:13 #609 [Verbose] > │         let v6 : UH6 = UH6_0(v2, v3, v1)                                     │
00:00:13 #610 [Verbose] > │         method27(v4, v6, v5)                                                 │
00:00:13 #611 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:13 #612 [Verbose] > │         struct (v1, v2)                                                      │
00:00:13 #613 [Verbose] > │ and method28 (v0 : UH6, v1 : UH6) : UH6 =                                    │
00:00:13 #614 [Verbose] > │     match v0 with                                                            │
00:00:13 #615 [Verbose] > │     | UH6_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:13 #616 [Verbose] > │         let v5 : UH6 = UH6_0(v2, v3, v1)                                     │
00:00:13 #617 [Verbose] > │         method28(v4, v5)                                                     │
00:00:13 #618 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:13 #619 [Verbose] > │         v1                                                                   │
00:00:13 #620 [Verbose] > │ and method29 (v0 : Map<int32, int64>, v1 : UH6, v2 : UH2) : UH2 =            │
00:00:13 #621 [Verbose] > │     match v1 with                                                            │
00:00:13 #622 [Verbose] > │     | UH6_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:13 #623 [Verbose] > │         let v6 : UH2 = method29(v0, v5, v2)                                  │
00:00:13 #624 [Verbose] > │         let v7 : int64 = v0.[v3]                                             │
00:00:13 #625 [Verbose] > │         let v8 : int32 = int32 v7                                            │
00:00:13 #626 [Verbose] > │         let v9 : string = v4.PadRight v8                                     │
00:00:13 #627 [Verbose] > │         UH2_0(v9, v6)                                                        │
00:00:13 #628 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:13 #629 [Verbose] > │         v2                                                                   │
00:00:13 #630 [Verbose] > │ and method31 (v0 : UH2, v1 : int32) : int32 =                                │
00:00:13 #631 [Verbose] > │     match v0 with                                                            │
00:00:13 #632 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:00:13 #633 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:13 #634 [Verbose] > │         method31(v3, v4)                                                     │
00:00:13 #635 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:13 #636 [Verbose] > │         v1                                                                   │
00:00:13 #637 [Verbose] > │ and method32 (v0 : (string []), v1 : UH2, v2 : int32) : int32 =              │
00:00:13 #638 [Verbose] > │     match v1 with                                                            │
00:00:13 #639 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:00:13 #640 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:13 #641 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:13 #642 [Verbose] > │         method32(v0, v4, v5)                                                 │
00:00:13 #643 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:13 #644 [Verbose] > │         v2                                                                   │
00:00:13 #645 [Verbose] > │ and method30 (v0 : UH2) : (string []) =                                      │
00:00:13 #646 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:13 #647 [Verbose] > │     let v2 : int32 = method31(v0, v1)                                        │
00:00:13 #648 [Verbose] > │     let v3 : (string []) = Array.zeroCreate<string> (v2)                     │
00:00:13 #649 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:13 #650 [Verbose] > │     let v5 : int32 = method32(v3, v0, v4)                                    │
00:00:13 #651 [Verbose] > │     v3                                                                       │
00:00:13 #652 [Verbose] > │ and method34 (v0 : UH5, v1 : uint64) : uint64 =                              │
00:00:13 #653 [Verbose] > │     match v0 with                                                            │
00:00:13 #654 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:13 #655 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:00:13 #656 [Verbose] > │         method34(v4, v5)                                                     │
00:00:13 #657 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:13 #658 [Verbose] > │         v1                                                                   │
00:00:13 #659 [Verbose] > │ and method35 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : uint64) :     │
00:00:13 #660 [Verbose] > │ uint64 =                                                                     │
00:00:13 #661 [Verbose] > │     match v1 with                                                            │
00:00:13 #662 [Verbose] > │     | UH5_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:13 #663 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:13 #664 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:00:13 #665 [Verbose] > │         method35(v0, v5, v6)                                                 │
00:00:13 #666 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:13 #667 [Verbose] > │         v2                                                                   │
00:00:13 #668 [Verbose] > │ and method33 (v0 : UH5) : (struct (int32 * int64) []) =                      │
00:00:13 #669 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:13 #670 [Verbose] > │     let v2 : uint64 = method34(v0, v1)                                       │
00:00:13 #671 [Verbose] > │     let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 *  │
00:00:13 #672 [Verbose] > │ int64)> (System.Convert.ToInt32(v2))                                         │
00:00:13 #673 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:13 #674 [Verbose] > │     let v5 : uint64 = method35(v3, v0, v4)                                   │
00:00:13 #675 [Verbose] > │     v3                                                                       │
00:00:13 #676 [Verbose] > │ and closure6 () struct (v0 : int32, v1 : int64) : int64 =                    │
00:00:13 #677 [Verbose] > │     v1                                                                       │
00:00:13 #678 [Verbose] > │ and closure0 () () : unit =                                                  │
00:00:13 #679 [Verbose] > │     let v0 : (unit -> unit) = closure0()                                     │
00:00:13 #680 [Verbose] > │     let v1 : string = nameof v0                                              │
00:00:13 #681 [Verbose] > │     let v2 : string = ""                                                     │
00:00:13 #682 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:13 #683 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:13 #684 [Verbose] > │     let v3 : string = $"Test: {v1}"                                          │
00:00:13 #685 [Verbose] > │     System.Console.WriteLine v3                                              │
00:00:13 #686 [Verbose] > │     let v4 : string = "a"                                                    │
00:00:13 #687 [Verbose] > │     let v5 : string = "b"                                                    │
00:00:13 #688 [Verbose] > │     let v6 : UH0 = UH0_1                                                     │
00:00:13 #689 [Verbose] > │     let v7 : UH0 = UH0_0(v5, v5, v5, v6)                                     │
00:00:13 #690 [Verbose] > │     let v8 : UH0 = UH0_0(v4, v4, v4, v7)                                     │
00:00:13 #691 [Verbose] > │     let v9 : (struct (string * string * string) []) = method1(v8)            │
00:00:13 #692 [Verbose] > │     let v10 : uint64 = System.Convert.ToUInt64 v9.Length                     │
00:00:13 #693 [Verbose] > │     let v11 : (struct (string * string * string * (int64 [])) []) =          │
00:00:13 #694 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))>             │
00:00:13 #695 [Verbose] > │ (System.Convert.ToInt32(v10))                                                │
00:00:13 #696 [Verbose] > │     let v12 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:00:13 #697 [Verbose] > │     while method4(v10, v12) do                                               │
00:00:13 #698 [Verbose] > │         let v14 : uint64 = v12.l0                                            │
00:00:13 #699 [Verbose] > │         let struct (v15 : string, v16 : string, v17 : string) = v9.[int v14] │
00:00:13 #700 [Verbose] > │         let v18 : string = $"%A{struct (v15, v16)}"                          │
00:00:13 #701 [Verbose] > │         System.Console.WriteLine v2                                          │
00:00:13 #702 [Verbose] > │         let v19 : string = $"Solution: {v18}  "                              │
00:00:13 #703 [Verbose] > │         System.Console.WriteLine v19                                         │
00:00:13 #704 [Verbose] > │         let v20 : int32 = 0                                                  │
00:00:13 #705 [Verbose] > │         let v21 : string = "A"                                               │
00:00:13 #706 [Verbose] > │         let v22 : (struct (string * string) -> string) = closure1()          │
00:00:13 #707 [Verbose] > │         let v23 : int32 = 1                                                  │
00:00:13 #708 [Verbose] > │         let v24 : string = "B"                                               │
00:00:13 #709 [Verbose] > │         let v25 : (struct (string * string) -> string) = closure2()          │
00:00:13 #710 [Verbose] > │         let v26 : UH1 = UH1_1                                                │
00:00:13 #711 [Verbose] > │         let v27 : UH1 = UH1_0(v23, v24, v25, v26)                            │
00:00:13 #712 [Verbose] > │         let v28 : UH1 = UH1_0(v20, v21, v22, v27)                            │
00:00:13 #713 [Verbose] > │         let v29 : (struct (int32 * string * (struct (string * string) ->     │
00:00:13 #714 [Verbose] > │ string)) []) = method5(v28)                                                  │
00:00:13 #715 [Verbose] > │         let v30 : uint64 = System.Convert.ToUInt64 v29.Length                │
00:00:13 #716 [Verbose] > │         let v31 : (struct (string * int64) []) = Array.zeroCreate<struct     │
00:00:13 #717 [Verbose] > │ (string * int64)> (System.Convert.ToInt32(v30))                              │
00:00:13 #718 [Verbose] > │         let v32 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:13 #719 [Verbose] > │         while method4(v30, v32) do                                           │
00:00:13 #720 [Verbose] > │             let v34 : uint64 = v32.l0                                        │
00:00:13 #721 [Verbose] > │             let struct (v35 : int32, v36 : string, v37 : (struct (string *   │
00:00:13 #722 [Verbose] > │ string) -> string)) = v29.[int v34]                                          │
00:00:13 #723 [Verbose] > │             let mutable result = None                                        │
00:00:13 #724 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:13 #725 [Verbose] > │             #if !WASM                                                        │
00:00:13 #726 [Verbose] > │             ()                                                               │
00:00:13 #727 [Verbose] > │             #else                                                            │
00:00:13 #728 [Verbose] > │             ()                                                               │
00:00:13 #729 [Verbose] > │             #endif                                                           │
00:00:13 #730 [Verbose] > │             #else                                                            │
00:00:13 #731 [Verbose] > │             System.GC.Collect ()                                             │
00:00:13 #732 [Verbose] > │             ()                                                               │
00:00:13 #733 [Verbose] > │             #endif                                                           │
00:00:13 #734 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:13 #735 [Verbose] > │             result |> Option.get                                             │
00:00:13 #736 [Verbose] > │             let v38 : (unit -> System.Diagnostics.Stopwatch) =               │
00:00:13 #737 [Verbose] > │ System.Diagnostics.Stopwatch                                                 │
00:00:13 #738 [Verbose] > │             let v39 : System.Diagnostics.Stopwatch = v38 ()                  │
00:00:13 #739 [Verbose] > │             v39.Start ()                                                     │
00:00:13 #740 [Verbose] > │             let v40 : int64 = v39.ElapsedMilliseconds                        │
00:00:13 #741 [Verbose] > │             let v41 : (int32 []) = Array.zeroCreate<int32> (2000001)         │
00:00:13 #742 [Verbose] > │             let v42 : Mut1 = {l0 = 0} : Mut1                                 │
00:00:13 #743 [Verbose] > │             while method8(v42) do                                            │
00:00:13 #744 [Verbose] > │                 let v44 : int32 = v42.l0                                     │
00:00:13 #745 [Verbose] > │                 v41.[int v44] <- v44                                         │
00:00:13 #746 [Verbose] > │                 let v45 : int32 = v44 + 1                                    │
00:00:13 #747 [Verbose] > │                 v42.l0 <- v45                                                │
00:00:13 #748 [Verbose] > │                 ()                                                           │
00:00:13 #749 [Verbose] > │             let v46 : (int32 -> string) = closure3(v15, v16, v37)            │
00:00:13 #750 [Verbose] > │             let v47 : (string []) = v41 |> Array.Parallel.map v46            │
00:00:13 #751 [Verbose] > │             let v48 : int32 = v47.Length                                     │
00:00:13 #752 [Verbose] > │             let v49 : int32 = v48 - 1                                        │
00:00:13 #753 [Verbose] > │             let v50 : string = v47.[int v49]                                 │
00:00:13 #754 [Verbose] > │             let v51 : int64 = v39.ElapsedMilliseconds                        │
00:00:13 #755 [Verbose] > │             let v52 : int64 = v51 - v40                                      │
00:00:13 #756 [Verbose] > │             let v53 : string = $"Test case {v35 + 1}. {v36}. Time: {v52}  "  │
00:00:13 #757 [Verbose] > │             System.Console.WriteLine v53                                     │
00:00:13 #758 [Verbose] > │             v31.[int v34] <- struct (v50, v52)                               │
00:00:13 #759 [Verbose] > │             let v54 : uint64 = v34 + 1UL                                     │
00:00:13 #760 [Verbose] > │             v32.l0 <- v54                                                    │
00:00:13 #761 [Verbose] > │             ()                                                               │
00:00:13 #762 [Verbose] > │         let v55 : uint64 = System.Convert.ToUInt64 v31.Length                │
00:00:13 #763 [Verbose] > │         let v56 : (string []) = Array.zeroCreate<string>                     │
00:00:13 #764 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:13 #765 [Verbose] > │         let v57 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:13 #766 [Verbose] > │         while method4(v55, v57) do                                           │
00:00:13 #767 [Verbose] > │             let v59 : uint64 = v57.l0                                        │
00:00:13 #768 [Verbose] > │             let struct (v60 : string, v61 : int64) = v31.[int v59]           │
00:00:13 #769 [Verbose] > │             v56.[int v59] <- v60                                             │
00:00:13 #770 [Verbose] > │             let v62 : uint64 = v59 + 1UL                                     │
00:00:13 #771 [Verbose] > │             v57.l0 <- v62                                                    │
00:00:13 #772 [Verbose] > │             ()                                                               │
00:00:13 #773 [Verbose] > │         let v63 : uint64 = System.Convert.ToUInt64 v56.Length                │
00:00:13 #774 [Verbose] > │         let v64 : bool = v63 <= 1UL                                          │
00:00:13 #775 [Verbose] > │         if v64 then                                                          │
00:00:13 #776 [Verbose] > │             ()                                                               │
00:00:13 #777 [Verbose] > │         else                                                                 │
00:00:13 #778 [Verbose] > │             let v65 : string = v56.[int 0UL]                                 │
00:00:13 #779 [Verbose] > │             let v66 : uint64 = 0UL                                           │
00:00:13 #780 [Verbose] > │             let v67 : bool = method9(v65, v56, v66)                          │
00:00:13 #781 [Verbose] > │             if v67 then                                                      │
00:00:13 #782 [Verbose] > │                 ()                                                           │
00:00:13 #783 [Verbose] > │             else                                                             │
00:00:13 #784 [Verbose] > │                 let v68 : string = $"Challenge error: {v56}"                 │
00:00:13 #785 [Verbose] > │                 failwith<unit> v68                                           │
00:00:13 #786 [Verbose] > │         let v69 : string = $"%A{v17}"                                        │
00:00:13 #787 [Verbose] > │         let v70 : (string []) = Array.zeroCreate<string>                     │
00:00:13 #788 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:13 #789 [Verbose] > │         let v71 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:13 #790 [Verbose] > │         while method4(v55, v71) do                                           │
00:00:13 #791 [Verbose] > │             let v73 : uint64 = v71.l0                                        │
00:00:13 #792 [Verbose] > │             let struct (v74 : string, v75 : int64) = v31.[int v73]           │
00:00:13 #793 [Verbose] > │             v70.[int v73] <- v74                                             │
00:00:13 #794 [Verbose] > │             let v76 : uint64 = v73 + 1UL                                     │
00:00:13 #795 [Verbose] > │             v71.l0 <- v76                                                    │
00:00:13 #796 [Verbose] > │             ()                                                               │
00:00:13 #797 [Verbose] > │         let v77 : string = v70.[int 0UL]                                     │
00:00:13 #798 [Verbose] > │         let v78 : string = $"%A{v77}"                                        │
00:00:13 #799 [Verbose] > │         let v79 : (int64 []) = Array.zeroCreate<int64>                       │
00:00:13 #800 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:13 #801 [Verbose] > │         let v80 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:13 #802 [Verbose] > │         while method4(v55, v80) do                                           │
00:00:13 #803 [Verbose] > │             let v82 : uint64 = v80.l0                                        │
00:00:13 #804 [Verbose] > │             let struct (v83 : string, v84 : int64) = v31.[int v82]           │
00:00:13 #805 [Verbose] > │             v79.[int v82] <- v84                                             │
00:00:13 #806 [Verbose] > │             let v85 : uint64 = v82 + 1UL                                     │
00:00:13 #807 [Verbose] > │             v80.l0 <- v85                                                    │
00:00:13 #808 [Verbose] > │             ()                                                               │
00:00:13 #809 [Verbose] > │         v11.[int v14] <- struct (v69, v18, v78, v79)                         │
00:00:13 #810 [Verbose] > │         let v86 : uint64 = v14 + 1UL                                         │
00:00:13 #811 [Verbose] > │         v12.l0 <- v86                                                        │
00:00:13 #812 [Verbose] > │         ()                                                                   │
00:00:13 #813 [Verbose] > │     let v87 : uint64 = System.Convert.ToUInt64 v11.Length                    │
00:00:13 #814 [Verbose] > │     let v88 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:13 #815 [Verbose] > │ (System.Convert.ToInt32(v87))                                                │
00:00:13 #816 [Verbose] > │     let v89 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:00:13 #817 [Verbose] > │     while method4(v87, v89) do                                               │
00:00:13 #818 [Verbose] > │         let v91 : uint64 = v89.l0                                            │
00:00:13 #819 [Verbose] > │         let struct (v92 : string, v93 : string, v94 : string, v95 : (int64 [ │
00:00:13 #820 [Verbose] > │ ])) = v11.[int v91]                                                          │
00:00:13 #821 [Verbose] > │         let v96 : uint64 = System.Convert.ToUInt64 v95.Length                │
00:00:13 #822 [Verbose] > │         let v97 : UH3 = UH3_1                                                │
00:00:13 #823 [Verbose] > │         let v98 : Mut2 = {l0 = 0UL; l1 = v97; l2 = 0L} : Mut2                │
00:00:13 #824 [Verbose] > │         while method10(v96, v98) do                                          │
00:00:13 #825 [Verbose] > │             let v100 : uint64 = v98.l0                                       │
00:00:13 #826 [Verbose] > │             let struct (v101 : UH3, v102 : int64) = v98.l1, v98.l2           │
00:00:13 #827 [Verbose] > │             let v103 : int64 = v95.[int v100]                                │
00:00:13 #828 [Verbose] > │             let v104 : int64 = v102 + 1L                                     │
00:00:13 #829 [Verbose] > │             let v105 : uint64 = v100 + 1UL                                   │
00:00:13 #830 [Verbose] > │             let v106 : UH3 = UH3_0(v102, v103, v101)                         │
00:00:13 #831 [Verbose] > │             v98.l0 <- v105                                                   │
00:00:13 #832 [Verbose] > │             v98.l1 <- v106                                                   │
00:00:13 #833 [Verbose] > │             v98.l2 <- v104                                                   │
00:00:13 #834 [Verbose] > │             ()                                                               │
00:00:13 #835 [Verbose] > │         let struct (v107 : UH3, v108 : int64) = v98.l1, v98.l2               │
00:00:13 #836 [Verbose] > │         let v109 : UH3 = UH3_1                                               │
00:00:13 #837 [Verbose] > │         let v110 : UH3 = method11(v107, v109)                                │
00:00:13 #838 [Verbose] > │         let v111 : (struct (int64 * int64) []) = method12(v110)              │
00:00:13 #839 [Verbose] > │         let v112 : int32 = v111.Length                                       │
00:00:13 #840 [Verbose] > │         let v113 : (struct (int64 * int64) []) = Array.zeroCreate<struct     │
00:00:13 #841 [Verbose] > │ (int64 * int64)> (v112)                                                      │
00:00:13 #842 [Verbose] > │         let v114 : Mut1 = {l0 = 0} : Mut1                                    │
00:00:13 #843 [Verbose] > │         while method15(v112, v114) do                                        │
00:00:13 #844 [Verbose] > │             let v116 : int32 = v114.l0                                       │
00:00:13 #845 [Verbose] > │             let struct (v117 : int64, v118 : int64) = v111.[int v116]        │
00:00:13 #846 [Verbose] > │             let v119 : int64 = v117 + 1L                                     │
00:00:13 #847 [Verbose] > │             v113.[int v116] <- struct (v119, v118)                           │
00:00:13 #848 [Verbose] > │             let v120 : int32 = v116 + 1                                      │
00:00:13 #849 [Verbose] > │             v114.l0 <- v120                                                  │
00:00:13 #850 [Verbose] > │             ()                                                               │
00:00:13 #851 [Verbose] > │         let v121 : (struct (int64 * int64) -> int64) = closure4()            │
00:00:13 #852 [Verbose] > │         let v122 : (struct (int64 * int64) []) = v113 |> Array.sortBy v121   │
00:00:13 #853 [Verbose] > │         let struct (v123 : int64, v124 : int64) = v122.[int 0]               │
00:00:13 #854 [Verbose] > │         let v125 : string = $"%A{struct (v123, v124)}"                       │
00:00:13 #855 [Verbose] > │         let v126 : bool = v92 = v94                                          │
00:00:13 #856 [Verbose] > │         let v131 : US0 =                                                     │
00:00:13 #857 [Verbose] > │             if v126 then                                                     │
00:00:13 #858 [Verbose] > │                 let v127 : System.ConsoleColor =                             │
00:00:13 #859 [Verbose] > │ System.ConsoleColor.DarkGreen                                                │
00:00:13 #860 [Verbose] > │                 US0_1(v127)                                                  │
00:00:13 #861 [Verbose] > │             else                                                             │
00:00:13 #862 [Verbose] > │                 let v129 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:00:13 #863 [Verbose] > │                 US0_1(v129)                                                  │
00:00:13 #864 [Verbose] > │         let v132 : UH2 = UH2_1                                               │
00:00:13 #865 [Verbose] > │         let v133 : UH2 = UH2_0(v125, v132)                                   │
00:00:13 #866 [Verbose] > │         let v134 : UH2 = UH2_0(v94, v133)                                    │
00:00:13 #867 [Verbose] > │         let v135 : UH2 = UH2_0(v92, v134)                                    │
00:00:13 #868 [Verbose] > │         let v136 : UH2 = UH2_0(v93, v135)                                    │
00:00:13 #869 [Verbose] > │         v88.[int v91] <- struct (v136, v131)                                 │
00:00:13 #870 [Verbose] > │         let v137 : uint64 = v91 + 1UL                                        │
00:00:13 #871 [Verbose] > │         v89.l0 <- v137                                                       │
00:00:13 #872 [Verbose] > │         ()                                                                   │
00:00:13 #873 [Verbose] > │     let v138 : string = "Input"                                              │
00:00:13 #874 [Verbose] > │     let v139 : string = "Expected"                                           │
00:00:13 #875 [Verbose] > │     let v140 : string = "Result"                                             │
00:00:13 #876 [Verbose] > │     let v141 : string = "Best"                                               │
00:00:13 #877 [Verbose] > │     let v142 : UH2 = UH2_1                                                   │
00:00:13 #878 [Verbose] > │     let v143 : UH2 = UH2_0(v141, v142)                                       │
00:00:13 #879 [Verbose] > │     let v144 : UH2 = UH2_0(v140, v143)                                       │
00:00:13 #880 [Verbose] > │     let v145 : UH2 = UH2_0(v139, v144)                                       │
00:00:13 #881 [Verbose] > │     let v146 : UH2 = UH2_0(v138, v145)                                       │
00:00:13 #882 [Verbose] > │     let v147 : US0 = US0_0                                                   │
00:00:13 #883 [Verbose] > │     let v148 : string = "---"                                                │
00:00:13 #884 [Verbose] > │     let v149 : UH2 = UH2_1                                                   │
00:00:13 #885 [Verbose] > │     let v150 : UH2 = UH2_0(v148, v149)                                       │
00:00:13 #886 [Verbose] > │     let v151 : UH2 = UH2_0(v148, v150)                                       │
00:00:13 #887 [Verbose] > │     let v152 : UH2 = UH2_0(v148, v151)                                       │
00:00:13 #888 [Verbose] > │     let v153 : UH2 = UH2_0(v148, v152)                                       │
00:00:13 #889 [Verbose] > │     let v154 : US0 = US0_0                                                   │
00:00:13 #890 [Verbose] > │     let v155 : UH4 = UH4_1                                                   │
00:00:13 #891 [Verbose] > │     let v156 : UH4 = UH4_0(v153, v154, v155)                                 │
00:00:13 #892 [Verbose] > │     let v157 : UH4 = UH4_0(v146, v147, v156)                                 │
00:00:13 #893 [Verbose] > │     let v158 : (struct (UH2 * US0) []) = method16(v157)                      │
00:00:13 #894 [Verbose] > │     let v159 : uint64 = System.Convert.ToUInt64 v158.Length                  │
00:00:13 #895 [Verbose] > │     let v160 : uint64 = System.Convert.ToUInt64 v88.Length                   │
00:00:13 #896 [Verbose] > │     let v161 : uint64 = v159 + v160                                          │
00:00:13 #897 [Verbose] > │     let v162 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 *      │
00:00:13 #898 [Verbose] > │ US0)> (System.Convert.ToInt32(v161))                                         │
00:00:13 #899 [Verbose] > │     let v163 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #900 [Verbose] > │     while method4(v161, v163) do                                             │
00:00:13 #901 [Verbose] > │         let v165 : uint64 = v163.l0                                          │
00:00:13 #902 [Verbose] > │         let v166 : bool = v165 < v159                                        │
00:00:13 #903 [Verbose] > │         let struct (v172 : UH2, v173 : US0) =                                │
00:00:13 #904 [Verbose] > │             if v166 then                                                     │
00:00:13 #905 [Verbose] > │                 let struct (v167 : UH2, v168 : US0) = v158.[int v165]        │
00:00:13 #906 [Verbose] > │                 struct (v167, v168)                                          │
00:00:13 #907 [Verbose] > │             else                                                             │
00:00:13 #908 [Verbose] > │                 let v169 : uint64 = v165 - v159                              │
00:00:13 #909 [Verbose] > │                 let struct (v170 : UH2, v171 : US0) = v88.[int v169]         │
00:00:13 #910 [Verbose] > │                 struct (v170, v171)                                          │
00:00:13 #911 [Verbose] > │         v162.[int v165] <- struct (v172, v173)                               │
00:00:13 #912 [Verbose] > │         let v174 : uint64 = v165 + 1UL                                       │
00:00:13 #913 [Verbose] > │         v163.l0 <- v174                                                      │
00:00:13 #914 [Verbose] > │         ()                                                                   │
00:00:13 #915 [Verbose] > │     let v175 : uint64 = System.Convert.ToUInt64 v162.Length                  │
00:00:13 #916 [Verbose] > │     let v176 : ((string []) []) = Array.zeroCreate<(string [])>              │
00:00:13 #917 [Verbose] > │ (System.Convert.ToInt32(v175))                                               │
00:00:13 #918 [Verbose] > │     let v177 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #919 [Verbose] > │     while method4(v175, v177) do                                             │
00:00:13 #920 [Verbose] > │         let v179 : uint64 = v177.l0                                          │
00:00:13 #921 [Verbose] > │         let struct (v180 : UH2, v181 : US0) = v162.[int v179]                │
00:00:13 #922 [Verbose] > │         let v182 : (string []) = method19(v180)                              │
00:00:13 #923 [Verbose] > │         v176.[int v179] <- v182                                              │
00:00:13 #924 [Verbose] > │         let v183 : uint64 = v179 + 1UL                                       │
00:00:13 #925 [Verbose] > │         v177.l0 <- v183                                                      │
00:00:13 #926 [Verbose] > │         ()                                                                   │
00:00:13 #927 [Verbose] > │     let v184 : ((string []) []) = v176 |> Array.transpose                    │
00:00:13 #928 [Verbose] > │     let v185 : uint64 = System.Convert.ToUInt64 v184.Length                  │
00:00:13 #929 [Verbose] > │     let v186 : (int64 []) = Array.zeroCreate<int64>                          │
00:00:13 #930 [Verbose] > │ (System.Convert.ToInt32(v185))                                               │
00:00:13 #931 [Verbose] > │     let v187 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #932 [Verbose] > │     while method4(v185, v187) do                                             │
00:00:13 #933 [Verbose] > │         let v189 : uint64 = v187.l0                                          │
00:00:13 #934 [Verbose] > │         let v190 : (string []) = v184.[int v189]                             │
00:00:13 #935 [Verbose] > │         let v191 : uint64 = System.Convert.ToUInt64 v190.Length              │
00:00:13 #936 [Verbose] > │         let v192 : (int64 []) = Array.zeroCreate<int64>                      │
00:00:13 #937 [Verbose] > │ (System.Convert.ToInt32(v191))                                               │
00:00:13 #938 [Verbose] > │         let v193 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:00:13 #939 [Verbose] > │         while method4(v191, v193) do                                         │
00:00:13 #940 [Verbose] > │             let v195 : uint64 = v193.l0                                      │
00:00:13 #941 [Verbose] > │             let v196 : string = v190.[int v195]                              │
00:00:13 #942 [Verbose] > │             let v197 : int64 = System.Convert.ToInt64 v196.Length            │
00:00:13 #943 [Verbose] > │             v192.[int v195] <- v197                                          │
00:00:13 #944 [Verbose] > │             let v198 : uint64 = v195 + 1UL                                   │
00:00:13 #945 [Verbose] > │             v193.l0 <- v198                                                  │
00:00:13 #946 [Verbose] > │             ()                                                               │
00:00:13 #947 [Verbose] > │         let v199 : (int64 []) = v192 |> Array.sortDescending                 │
00:00:13 #948 [Verbose] > │         let v200 : int64 option = v199 |> Array.tryItem 0                    │
00:00:13 #949 [Verbose] > │         let v201 : (int64 -> US1) = closure5()                               │
00:00:13 #950 [Verbose] > │         let v202 : US1 = US1_0                                               │
00:00:13 #951 [Verbose] > │         let v203 : US1 = v200 |> Option.map v201 |> Option.defaultValue v202 │
00:00:13 #952 [Verbose] > │         let v206 : int64 =                                                   │
00:00:13 #953 [Verbose] > │             match v203 with                                                  │
00:00:13 #954 [Verbose] > │             | US1_0 -> (* None *)                                            │
00:00:13 #955 [Verbose] > │                 0L                                                           │
00:00:13 #956 [Verbose] > │             | US1_1(v204) -> (* Some *)                                      │
00:00:13 #957 [Verbose] > │                 v204                                                         │
00:00:13 #958 [Verbose] > │         v186.[int v189] <- v206                                              │
00:00:13 #959 [Verbose] > │         let v207 : uint64 = v189 + 1UL                                       │
00:00:13 #960 [Verbose] > │         v187.l0 <- v207                                                      │
00:00:13 #961 [Verbose] > │         ()                                                                   │
00:00:13 #962 [Verbose] > │     let v208 : uint64 = System.Convert.ToUInt64 v186.Length                  │
00:00:13 #963 [Verbose] > │     let v209 : UH5 = UH5_1                                                   │
00:00:13 #964 [Verbose] > │     let v210 : Mut3 = {l0 = 0UL; l1 = v209; l2 = 0} : Mut3                   │
00:00:13 #965 [Verbose] > │     while method22(v208, v210) do                                            │
00:00:13 #966 [Verbose] > │         let v212 : uint64 = v210.l0                                          │
00:00:13 #967 [Verbose] > │         let struct (v213 : UH5, v214 : int32) = v210.l1, v210.l2             │
00:00:13 #968 [Verbose] > │         let v215 : int64 = v186.[int v212]                                   │
00:00:13 #969 [Verbose] > │         let v216 : int32 = v214 + 1                                          │
00:00:13 #970 [Verbose] > │         let v217 : uint64 = v212 + 1UL                                       │
00:00:13 #971 [Verbose] > │         let v218 : UH5 = UH5_0(v214, v215, v213)                             │
00:00:13 #972 [Verbose] > │         v210.l0 <- v217                                                      │
00:00:13 #973 [Verbose] > │         v210.l1 <- v218                                                      │
00:00:13 #974 [Verbose] > │         v210.l2 <- v216                                                      │
00:00:13 #975 [Verbose] > │         ()                                                                   │
00:00:13 #976 [Verbose] > │     let struct (v219 : UH5, v220 : int32) = v210.l1, v210.l2                 │
00:00:13 #977 [Verbose] > │     let v221 : UH5 = UH5_1                                                   │
00:00:13 #978 [Verbose] > │     let v222 : UH5 = method23(v219, v221)                                    │
00:00:13 #979 [Verbose] > │     let v223 : (struct (int32 * int64) []) = method24(v222)                  │
00:00:13 #980 [Verbose] > │     let v224 : Map<int32, int64> = v223 |> Array.map (fun (struct (a, b)) -> │
00:00:13 #981 [Verbose] > │ a, b) |> Map.ofArray                                                         │
00:00:13 #982 [Verbose] > │     let v225 : (struct ((string []) * US0) []) = Array.zeroCreate<struct     │
00:00:13 #983 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v175))                          │
00:00:13 #984 [Verbose] > │     let v226 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #985 [Verbose] > │     while method4(v175, v226) do                                             │
00:00:13 #986 [Verbose] > │         let v228 : uint64 = v226.l0                                          │
00:00:13 #987 [Verbose] > │         let struct (v229 : UH2, v230 : US0) = v162.[int v228]                │
00:00:13 #988 [Verbose] > │         let v231 : UH6 = UH6_1                                               │
00:00:13 #989 [Verbose] > │         let v232 : int32 = 0                                                 │
00:00:13 #990 [Verbose] > │         let struct (v233 : UH6, v234 : int32) = method27(v229, v231, v232)   │
00:00:13 #991 [Verbose] > │         let v235 : UH6 = UH6_1                                               │
00:00:13 #992 [Verbose] > │         let v236 : UH6 = method28(v233, v235)                                │
00:00:13 #993 [Verbose] > │         let v237 : UH2 = UH2_1                                               │
00:00:13 #994 [Verbose] > │         let v238 : UH2 = method29(v224, v236, v237)                          │
00:00:13 #995 [Verbose] > │         let v239 : (string []) = method30(v238)                              │
00:00:13 #996 [Verbose] > │         v225.[int v228] <- struct (v239, v230)                               │
00:00:13 #997 [Verbose] > │         let v240 : uint64 = v228 + 1UL                                       │
00:00:13 #998 [Verbose] > │         v226.l0 <- v240                                                      │
00:00:13 #999 [Verbose] > │         ()                                                                   │
00:00:13 #1000 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:13 #1001 [Verbose] > │     let v241 : uint64 = System.Convert.ToUInt64 v225.Length                  │
00:00:13 #1002 [Verbose] > │     let v242 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #1003 [Verbose] > │     while method4(v241, v242) do                                             │
00:00:13 #1004 [Verbose] > │         let v244 : uint64 = v242.l0                                          │
00:00:13 #1005 [Verbose] > │         let struct (v245 : (string []), v246 : US0) = v225.[int v244]        │
00:00:13 #1006 [Verbose] > │         match v246 with                                                      │
00:00:13 #1007 [Verbose] > │         | US0_0 -> (* None *)                                                │
00:00:13 #1008 [Verbose] > │             let mutable result = None                                        │
00:00:13 #1009 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:13 #1010 [Verbose] > │             #if !WASM                                                        │
00:00:13 #1011 [Verbose] > │             ()                                                               │
00:00:13 #1012 [Verbose] > │             #else                                                            │
00:00:13 #1013 [Verbose] > │             ()                                                               │
00:00:13 #1014 [Verbose] > │             #endif                                                           │
00:00:13 #1015 [Verbose] > │             #else                                                            │
00:00:13 #1016 [Verbose] > │             System.Console.ResetColor ()                                     │
00:00:13 #1017 [Verbose] > │             ()                                                               │
00:00:13 #1018 [Verbose] > │             #endif                                                           │
00:00:13 #1019 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:13 #1020 [Verbose] > │             result |> Option.get                                             │
00:00:13 #1021 [Verbose] > │             ()                                                               │
00:00:13 #1022 [Verbose] > │         | US0_1(v247) -> (* Some *)                                          │
00:00:13 #1023 [Verbose] > │             let mutable result = None                                        │
00:00:13 #1024 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:13 #1025 [Verbose] > │             #if !WASM                                                        │
00:00:13 #1026 [Verbose] > │             ()                                                               │
00:00:13 #1027 [Verbose] > │             #else                                                            │
00:00:13 #1028 [Verbose] > │             ()                                                               │
00:00:13 #1029 [Verbose] > │             #endif                                                           │
00:00:13 #1030 [Verbose] > │             #else                                                            │
00:00:13 #1031 [Verbose] > │             System.Console.ForegroundColor <- v247                           │
00:00:13 #1032 [Verbose] > │             ()                                                               │
00:00:13 #1033 [Verbose] > │             #endif                                                           │
00:00:13 #1034 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:13 #1035 [Verbose] > │             result |> Option.get                                             │
00:00:13 #1036 [Verbose] > │             ()                                                               │
00:00:13 #1037 [Verbose] > │         let v248 : string = "\t| "                                           │
00:00:13 #1038 [Verbose] > │         let v249 : string = System.String.Join (v248, v245)                  │
00:00:13 #1039 [Verbose] > │         System.Console.WriteLine v249                                        │
00:00:13 #1040 [Verbose] > │         let mutable result = None                                            │
00:00:13 #1041 [Verbose] > │         #if FABLE_COMPILER_RUST                                              │
00:00:13 #1042 [Verbose] > │         #if !WASM                                                            │
00:00:13 #1043 [Verbose] > │         ()                                                                   │
00:00:13 #1044 [Verbose] > │         #else                                                                │
00:00:13 #1045 [Verbose] > │         ()                                                                   │
00:00:13 #1046 [Verbose] > │         #endif                                                               │
00:00:13 #1047 [Verbose] > │         #else                                                                │
00:00:13 #1048 [Verbose] > │         System.Console.ResetColor ()                                         │
00:00:13 #1049 [Verbose] > │         ()                                                                   │
00:00:13 #1050 [Verbose] > │         #endif                                                               │
00:00:13 #1051 [Verbose] > │         |> fun x -> result <- Some x                                         │
00:00:13 #1052 [Verbose] > │         result |> Option.get                                                 │
00:00:13 #1053 [Verbose] > │         let v250 : uint64 = v244 + 1UL                                       │
00:00:13 #1054 [Verbose] > │         v242.l0 <- v250                                                      │
00:00:13 #1055 [Verbose] > │         ()                                                                   │
00:00:13 #1056 [Verbose] > │     let v251 : ((float []) []) = Array.zeroCreate<(float [])>                │
00:00:13 #1057 [Verbose] > │ (System.Convert.ToInt32(v87))                                                │
00:00:13 #1058 [Verbose] > │     let v252 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #1059 [Verbose] > │     while method4(v87, v252) do                                              │
00:00:13 #1060 [Verbose] > │         let v254 : uint64 = v252.l0                                          │
00:00:13 #1061 [Verbose] > │         let struct (v255 : string, v256 : string, v257 : string, v258 :      │
00:00:13 #1062 [Verbose] > │ (int64 [])) = v11.[int v254]                                                 │
00:00:13 #1063 [Verbose] > │         let v259 : (int64 -> float) = float                                  │
00:00:13 #1064 [Verbose] > │         let v260 : uint64 = System.Convert.ToUInt64 v258.Length              │
00:00:13 #1065 [Verbose] > │         let v261 : (float []) = Array.zeroCreate<float>                      │
00:00:13 #1066 [Verbose] > │ (System.Convert.ToInt32(v260))                                               │
00:00:13 #1067 [Verbose] > │         let v262 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:00:13 #1068 [Verbose] > │         while method4(v260, v262) do                                         │
00:00:13 #1069 [Verbose] > │             let v264 : uint64 = v262.l0                                      │
00:00:13 #1070 [Verbose] > │             let v265 : int64 = v258.[int v264]                               │
00:00:13 #1071 [Verbose] > │             let v266 : float = v259 v265                                     │
00:00:13 #1072 [Verbose] > │             v261.[int v264] <- v266                                          │
00:00:13 #1073 [Verbose] > │             let v267 : uint64 = v264 + 1UL                                   │
00:00:13 #1074 [Verbose] > │             v262.l0 <- v267                                                  │
00:00:13 #1075 [Verbose] > │             ()                                                               │
00:00:13 #1076 [Verbose] > │         v251.[int v254] <- v261                                              │
00:00:13 #1077 [Verbose] > │         let v268 : uint64 = v254 + 1UL                                       │
00:00:13 #1078 [Verbose] > │         v252.l0 <- v268                                                      │
00:00:13 #1079 [Verbose] > │         ()                                                                   │
00:00:13 #1080 [Verbose] > │     let v269 : ((float []) []) = v251 |> Array.transpose                     │
00:00:13 #1081 [Verbose] > │     let v270 : uint64 = System.Convert.ToUInt64 v269.Length                  │
00:00:13 #1082 [Verbose] > │     let v271 : (float []) = Array.zeroCreate<float>                          │
00:00:13 #1083 [Verbose] > │ (System.Convert.ToInt32(v270))                                               │
00:00:13 #1084 [Verbose] > │     let v272 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #1085 [Verbose] > │     while method4(v270, v272) do                                             │
00:00:13 #1086 [Verbose] > │         let v274 : uint64 = v272.l0                                          │
00:00:13 #1087 [Verbose] > │         let v275 : (float []) = v269.[int v274]                              │
00:00:13 #1088 [Verbose] > │         let v276 : float = v275 |> Array.average                             │
00:00:13 #1089 [Verbose] > │         v271.[int v274] <- v276                                              │
00:00:13 #1090 [Verbose] > │         let v277 : uint64 = v274 + 1UL                                       │
00:00:13 #1091 [Verbose] > │         v272.l0 <- v277                                                      │
00:00:13 #1092 [Verbose] > │         ()                                                                   │
00:00:13 #1093 [Verbose] > │     let v278 : (float -> int64) = int64                                      │
00:00:13 #1094 [Verbose] > │     let v279 : uint64 = System.Convert.ToUInt64 v271.Length                  │
00:00:13 #1095 [Verbose] > │     let v280 : (int64 []) = Array.zeroCreate<int64>                          │
00:00:13 #1096 [Verbose] > │ (System.Convert.ToInt32(v279))                                               │
00:00:13 #1097 [Verbose] > │     let v281 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #1098 [Verbose] > │     while method4(v279, v281) do                                             │
00:00:13 #1099 [Verbose] > │         let v283 : uint64 = v281.l0                                          │
00:00:13 #1100 [Verbose] > │         let v284 : float = v271.[int v283]                                   │
00:00:13 #1101 [Verbose] > │         let v285 : int64 = v278 v284                                         │
00:00:13 #1102 [Verbose] > │         v280.[int v283] <- v285                                              │
00:00:13 #1103 [Verbose] > │         let v286 : uint64 = v283 + 1UL                                       │
00:00:13 #1104 [Verbose] > │         v281.l0 <- v286                                                      │
00:00:13 #1105 [Verbose] > │         ()                                                                   │
00:00:13 #1106 [Verbose] > │     let v287 : uint64 = System.Convert.ToUInt64 v280.Length                  │
00:00:13 #1107 [Verbose] > │     let v288 : UH5 = UH5_1                                                   │
00:00:13 #1108 [Verbose] > │     let v289 : Mut3 = {l0 = 0UL; l1 = v288; l2 = 0} : Mut3                   │
00:00:13 #1109 [Verbose] > │     while method22(v287, v289) do                                            │
00:00:13 #1110 [Verbose] > │         let v291 : uint64 = v289.l0                                          │
00:00:13 #1111 [Verbose] > │         let struct (v292 : UH5, v293 : int32) = v289.l1, v289.l2             │
00:00:13 #1112 [Verbose] > │         let v294 : int64 = v280.[int v291]                                   │
00:00:13 #1113 [Verbose] > │         let v295 : int32 = v293 + 1                                          │
00:00:13 #1114 [Verbose] > │         let v296 : uint64 = v291 + 1UL                                       │
00:00:13 #1115 [Verbose] > │         let v297 : UH5 = UH5_0(v293, v294, v292)                             │
00:00:13 #1116 [Verbose] > │         v289.l0 <- v296                                                      │
00:00:13 #1117 [Verbose] > │         v289.l1 <- v297                                                      │
00:00:13 #1118 [Verbose] > │         v289.l2 <- v295                                                      │
00:00:13 #1119 [Verbose] > │         ()                                                                   │
00:00:13 #1120 [Verbose] > │     let struct (v298 : UH5, v299 : int32) = v289.l1, v289.l2                 │
00:00:13 #1121 [Verbose] > │     let v300 : UH5 = UH5_1                                                   │
00:00:13 #1122 [Verbose] > │     let v301 : UH5 = method23(v298, v300)                                    │
00:00:13 #1123 [Verbose] > │     let v302 : (struct (int32 * int64) []) = method33(v301)                  │
00:00:13 #1124 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:13 #1125 [Verbose] > │     let v303 : string = "Average Ranking  "                                  │
00:00:13 #1126 [Verbose] > │     System.Console.WriteLine v303                                            │
00:00:13 #1127 [Verbose] > │     let v304 : (struct (int32 * int64) -> int64) = closure6()                │
00:00:13 #1128 [Verbose] > │     let v305 : (struct (int32 * int64) []) = v302 |> Array.sortBy v304       │
00:00:13 #1129 [Verbose] > │     let v306 : uint64 = System.Convert.ToUInt64 v305.Length                  │
00:00:13 #1130 [Verbose] > │     let v307 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #1131 [Verbose] > │     while method4(v306, v307) do                                             │
00:00:13 #1132 [Verbose] > │         let v309 : uint64 = v307.l0                                          │
00:00:13 #1133 [Verbose] > │         let struct (v310 : int32, v311 : int64) = v305.[int v309]            │
00:00:13 #1134 [Verbose] > │         let v312 : string = $"Test case %d{v310 + 1}. Average Time: %A{v311} │
00:00:13 #1135 [Verbose] > │ "                                                                            │
00:00:13 #1136 [Verbose] > │         System.Console.WriteLine v312                                        │
00:00:13 #1137 [Verbose] > │         let v313 : uint64 = v309 + 1UL                                       │
00:00:13 #1138 [Verbose] > │         v307.l0 <- v313                                                      │
00:00:13 #1139 [Verbose] > │         ()                                                                   │
00:00:13 #1140 [Verbose] > │     ()                                                                       │
00:00:13 #1141 [Verbose] > │ and method0 () : unit =                                                      │
00:00:13 #1142 [Verbose] > │     let v0 : (unit -> unit) = closure0()                                     │
00:00:13 #1143 [Verbose] > │     let v1 : string = nameof v0                                              │
00:00:13 #1144 [Verbose] > │     let v2 : string = ""                                                     │
00:00:13 #1145 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:13 #1146 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:13 #1147 [Verbose] > │     let v3 : string = $"Test: {v1}"                                          │
00:00:13 #1148 [Verbose] > │     System.Console.WriteLine v3                                              │
00:00:13 #1149 [Verbose] > │     let v4 : string = "a"                                                    │
00:00:13 #1150 [Verbose] > │     let v5 : string = "b"                                                    │
00:00:13 #1151 [Verbose] > │     let v6 : UH0 = UH0_1                                                     │
00:00:13 #1152 [Verbose] > │     let v7 : UH0 = UH0_0(v5, v5, v5, v6)                                     │
00:00:13 #1153 [Verbose] > │     let v8 : UH0 = UH0_0(v4, v4, v4, v7)                                     │
00:00:13 #1154 [Verbose] > │     let v9 : (struct (string * string * string) []) = method1(v8)            │
00:00:13 #1155 [Verbose] > │     let v10 : uint64 = System.Convert.ToUInt64 v9.Length                     │
00:00:13 #1156 [Verbose] > │     let v11 : (struct (string * string * string * (int64 [])) []) =          │
00:00:13 #1157 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))>             │
00:00:13 #1158 [Verbose] > │ (System.Convert.ToInt32(v10))                                                │
00:00:13 #1159 [Verbose] > │     let v12 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:00:13 #1160 [Verbose] > │     while method4(v10, v12) do                                               │
00:00:13 #1161 [Verbose] > │         let v14 : uint64 = v12.l0                                            │
00:00:13 #1162 [Verbose] > │         let struct (v15 : string, v16 : string, v17 : string) = v9.[int v14] │
00:00:13 #1163 [Verbose] > │         let v18 : string = $"%A{struct (v15, v16)}"                          │
00:00:13 #1164 [Verbose] > │         System.Console.WriteLine v2                                          │
00:00:13 #1165 [Verbose] > │         let v19 : string = $"Solution: {v18}  "                              │
00:00:13 #1166 [Verbose] > │         System.Console.WriteLine v19                                         │
00:00:13 #1167 [Verbose] > │         let v20 : int32 = 0                                                  │
00:00:13 #1168 [Verbose] > │         let v21 : string = "A"                                               │
00:00:13 #1169 [Verbose] > │         let v22 : (struct (string * string) -> string) = closure1()          │
00:00:13 #1170 [Verbose] > │         let v23 : int32 = 1                                                  │
00:00:13 #1171 [Verbose] > │         let v24 : string = "B"                                               │
00:00:13 #1172 [Verbose] > │         let v25 : (struct (string * string) -> string) = closure2()          │
00:00:13 #1173 [Verbose] > │         let v26 : UH1 = UH1_1                                                │
00:00:13 #1174 [Verbose] > │         let v27 : UH1 = UH1_0(v23, v24, v25, v26)                            │
00:00:13 #1175 [Verbose] > │         let v28 : UH1 = UH1_0(v20, v21, v22, v27)                            │
00:00:13 #1176 [Verbose] > │         let v29 : (struct (int32 * string * (struct (string * string) ->     │
00:00:13 #1177 [Verbose] > │ string)) []) = method5(v28)                                                  │
00:00:13 #1178 [Verbose] > │         let v30 : uint64 = System.Convert.ToUInt64 v29.Length                │
00:00:13 #1179 [Verbose] > │         let v31 : (struct (string * int64) []) = Array.zeroCreate<struct     │
00:00:13 #1180 [Verbose] > │ (string * int64)> (System.Convert.ToInt32(v30))                              │
00:00:13 #1181 [Verbose] > │         let v32 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:13 #1182 [Verbose] > │         while method4(v30, v32) do                                           │
00:00:13 #1183 [Verbose] > │             let v34 : uint64 = v32.l0                                        │
00:00:13 #1184 [Verbose] > │             let struct (v35 : int32, v36 : string, v37 : (struct (string *   │
00:00:13 #1185 [Verbose] > │ string) -> string)) = v29.[int v34]                                          │
00:00:13 #1186 [Verbose] > │             let mutable result = None                                        │
00:00:13 #1187 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:13 #1188 [Verbose] > │             #if !WASM                                                        │
00:00:13 #1189 [Verbose] > │             ()                                                               │
00:00:13 #1190 [Verbose] > │             #else                                                            │
00:00:13 #1191 [Verbose] > │             ()                                                               │
00:00:13 #1192 [Verbose] > │             #endif                                                           │
00:00:13 #1193 [Verbose] > │             #else                                                            │
00:00:13 #1194 [Verbose] > │             System.GC.Collect ()                                             │
00:00:13 #1195 [Verbose] > │             ()                                                               │
00:00:13 #1196 [Verbose] > │             #endif                                                           │
00:00:13 #1197 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:13 #1198 [Verbose] > │             result |> Option.get                                             │
00:00:13 #1199 [Verbose] > │             let v38 : (unit -> System.Diagnostics.Stopwatch) =               │
00:00:13 #1200 [Verbose] > │ System.Diagnostics.Stopwatch                                                 │
00:00:13 #1201 [Verbose] > │             let v39 : System.Diagnostics.Stopwatch = v38 ()                  │
00:00:13 #1202 [Verbose] > │             v39.Start ()                                                     │
00:00:13 #1203 [Verbose] > │             let v40 : int64 = v39.ElapsedMilliseconds                        │
00:00:13 #1204 [Verbose] > │             let v41 : (int32 []) = Array.zeroCreate<int32> (2000001)         │
00:00:13 #1205 [Verbose] > │             let v42 : Mut1 = {l0 = 0} : Mut1                                 │
00:00:13 #1206 [Verbose] > │             while method8(v42) do                                            │
00:00:13 #1207 [Verbose] > │                 let v44 : int32 = v42.l0                                     │
00:00:13 #1208 [Verbose] > │                 v41.[int v44] <- v44                                         │
00:00:13 #1209 [Verbose] > │                 let v45 : int32 = v44 + 1                                    │
00:00:13 #1210 [Verbose] > │                 v42.l0 <- v45                                                │
00:00:13 #1211 [Verbose] > │                 ()                                                           │
00:00:13 #1212 [Verbose] > │             let v46 : (int32 -> string) = closure3(v15, v16, v37)            │
00:00:13 #1213 [Verbose] > │             let v47 : (string []) = v41 |> Array.Parallel.map v46            │
00:00:13 #1214 [Verbose] > │             let v48 : int32 = v47.Length                                     │
00:00:13 #1215 [Verbose] > │             let v49 : int32 = v48 - 1                                        │
00:00:13 #1216 [Verbose] > │             let v50 : string = v47.[int v49]                                 │
00:00:13 #1217 [Verbose] > │             let v51 : int64 = v39.ElapsedMilliseconds                        │
00:00:13 #1218 [Verbose] > │             let v52 : int64 = v51 - v40                                      │
00:00:13 #1219 [Verbose] > │             let v53 : string = $"Test case {v35 + 1}. {v36}. Time: {v52}  "  │
00:00:13 #1220 [Verbose] > │             System.Console.WriteLine v53                                     │
00:00:13 #1221 [Verbose] > │             v31.[int v34] <- struct (v50, v52)                               │
00:00:13 #1222 [Verbose] > │             let v54 : uint64 = v34 + 1UL                                     │
00:00:13 #1223 [Verbose] > │             v32.l0 <- v54                                                    │
00:00:13 #1224 [Verbose] > │             ()                                                               │
00:00:13 #1225 [Verbose] > │         let v55 : uint64 = System.Convert.ToUInt64 v31.Length                │
00:00:13 #1226 [Verbose] > │         let v56 : (string []) = Array.zeroCreate<string>                     │
00:00:13 #1227 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:13 #1228 [Verbose] > │         let v57 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:13 #1229 [Verbose] > │         while method4(v55, v57) do                                           │
00:00:13 #1230 [Verbose] > │             let v59 : uint64 = v57.l0                                        │
00:00:13 #1231 [Verbose] > │             let struct (v60 : string, v61 : int64) = v31.[int v59]           │
00:00:13 #1232 [Verbose] > │             v56.[int v59] <- v60                                             │
00:00:13 #1233 [Verbose] > │             let v62 : uint64 = v59 + 1UL                                     │
00:00:13 #1234 [Verbose] > │             v57.l0 <- v62                                                    │
00:00:13 #1235 [Verbose] > │             ()                                                               │
00:00:13 #1236 [Verbose] > │         let v63 : uint64 = System.Convert.ToUInt64 v56.Length                │
00:00:13 #1237 [Verbose] > │         let v64 : bool = v63 <= 1UL                                          │
00:00:13 #1238 [Verbose] > │         if v64 then                                                          │
00:00:13 #1239 [Verbose] > │             ()                                                               │
00:00:13 #1240 [Verbose] > │         else                                                                 │
00:00:13 #1241 [Verbose] > │             let v65 : string = v56.[int 0UL]                                 │
00:00:13 #1242 [Verbose] > │             let v66 : uint64 = 0UL                                           │
00:00:13 #1243 [Verbose] > │             let v67 : bool = method9(v65, v56, v66)                          │
00:00:13 #1244 [Verbose] > │             if v67 then                                                      │
00:00:13 #1245 [Verbose] > │                 ()                                                           │
00:00:13 #1246 [Verbose] > │             else                                                             │
00:00:13 #1247 [Verbose] > │                 let v68 : string = $"Challenge error: {v56}"                 │
00:00:13 #1248 [Verbose] > │                 failwith<unit> v68                                           │
00:00:13 #1249 [Verbose] > │         let v69 : string = $"%A{v17}"                                        │
00:00:13 #1250 [Verbose] > │         let v70 : (string []) = Array.zeroCreate<string>                     │
00:00:13 #1251 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:13 #1252 [Verbose] > │         let v71 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:13 #1253 [Verbose] > │         while method4(v55, v71) do                                           │
00:00:13 #1254 [Verbose] > │             let v73 : uint64 = v71.l0                                        │
00:00:13 #1255 [Verbose] > │             let struct (v74 : string, v75 : int64) = v31.[int v73]           │
00:00:13 #1256 [Verbose] > │             v70.[int v73] <- v74                                             │
00:00:13 #1257 [Verbose] > │             let v76 : uint64 = v73 + 1UL                                     │
00:00:13 #1258 [Verbose] > │             v71.l0 <- v76                                                    │
00:00:13 #1259 [Verbose] > │             ()                                                               │
00:00:13 #1260 [Verbose] > │         let v77 : string = v70.[int 0UL]                                     │
00:00:13 #1261 [Verbose] > │         let v78 : string = $"%A{v77}"                                        │
00:00:13 #1262 [Verbose] > │         let v79 : (int64 []) = Array.zeroCreate<int64>                       │
00:00:13 #1263 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:13 #1264 [Verbose] > │         let v80 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:13 #1265 [Verbose] > │         while method4(v55, v80) do                                           │
00:00:13 #1266 [Verbose] > │             let v82 : uint64 = v80.l0                                        │
00:00:13 #1267 [Verbose] > │             let struct (v83 : string, v84 : int64) = v31.[int v82]           │
00:00:13 #1268 [Verbose] > │             v79.[int v82] <- v84                                             │
00:00:13 #1269 [Verbose] > │             let v85 : uint64 = v82 + 1UL                                     │
00:00:13 #1270 [Verbose] > │             v80.l0 <- v85                                                    │
00:00:13 #1271 [Verbose] > │             ()                                                               │
00:00:13 #1272 [Verbose] > │         v11.[int v14] <- struct (v69, v18, v78, v79)                         │
00:00:13 #1273 [Verbose] > │         let v86 : uint64 = v14 + 1UL                                         │
00:00:13 #1274 [Verbose] > │         v12.l0 <- v86                                                        │
00:00:13 #1275 [Verbose] > │         ()                                                                   │
00:00:13 #1276 [Verbose] > │     let v87 : uint64 = System.Convert.ToUInt64 v11.Length                    │
00:00:13 #1277 [Verbose] > │     let v88 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:13 #1278 [Verbose] > │ (System.Convert.ToInt32(v87))                                                │
00:00:13 #1279 [Verbose] > │     let v89 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:00:13 #1280 [Verbose] > │     while method4(v87, v89) do                                               │
00:00:13 #1281 [Verbose] > │         let v91 : uint64 = v89.l0                                            │
00:00:13 #1282 [Verbose] > │         let struct (v92 : string, v93 : string, v94 : string, v95 : (int64 [ │
00:00:13 #1283 [Verbose] > │ ])) = v11.[int v91]                                                          │
00:00:13 #1284 [Verbose] > │         let v96 : uint64 = System.Convert.ToUInt64 v95.Length                │
00:00:13 #1285 [Verbose] > │         let v97 : UH3 = UH3_1                                                │
00:00:13 #1286 [Verbose] > │         let v98 : Mut2 = {l0 = 0UL; l1 = v97; l2 = 0L} : Mut2                │
00:00:13 #1287 [Verbose] > │         while method10(v96, v98) do                                          │
00:00:13 #1288 [Verbose] > │             let v100 : uint64 = v98.l0                                       │
00:00:13 #1289 [Verbose] > │             let struct (v101 : UH3, v102 : int64) = v98.l1, v98.l2           │
00:00:13 #1290 [Verbose] > │             let v103 : int64 = v95.[int v100]                                │
00:00:13 #1291 [Verbose] > │             let v104 : int64 = v102 + 1L                                     │
00:00:13 #1292 [Verbose] > │             let v105 : uint64 = v100 + 1UL                                   │
00:00:13 #1293 [Verbose] > │             let v106 : UH3 = UH3_0(v102, v103, v101)                         │
00:00:13 #1294 [Verbose] > │             v98.l0 <- v105                                                   │
00:00:13 #1295 [Verbose] > │             v98.l1 <- v106                                                   │
00:00:13 #1296 [Verbose] > │             v98.l2 <- v104                                                   │
00:00:13 #1297 [Verbose] > │             ()                                                               │
00:00:13 #1298 [Verbose] > │         let struct (v107 : UH3, v108 : int64) = v98.l1, v98.l2               │
00:00:13 #1299 [Verbose] > │         let v109 : UH3 = UH3_1                                               │
00:00:13 #1300 [Verbose] > │         let v110 : UH3 = method11(v107, v109)                                │
00:00:13 #1301 [Verbose] > │         let v111 : (struct (int64 * int64) []) = method12(v110)              │
00:00:13 #1302 [Verbose] > │         let v112 : int32 = v111.Length                                       │
00:00:13 #1303 [Verbose] > │         let v113 : (struct (int64 * int64) []) = Array.zeroCreate<struct     │
00:00:13 #1304 [Verbose] > │ (int64 * int64)> (v112)                                                      │
00:00:13 #1305 [Verbose] > │         let v114 : Mut1 = {l0 = 0} : Mut1                                    │
00:00:13 #1306 [Verbose] > │         while method15(v112, v114) do                                        │
00:00:13 #1307 [Verbose] > │             let v116 : int32 = v114.l0                                       │
00:00:13 #1308 [Verbose] > │             let struct (v117 : int64, v118 : int64) = v111.[int v116]        │
00:00:13 #1309 [Verbose] > │             let v119 : int64 = v117 + 1L                                     │
00:00:13 #1310 [Verbose] > │             v113.[int v116] <- struct (v119, v118)                           │
00:00:13 #1311 [Verbose] > │             let v120 : int32 = v116 + 1                                      │
00:00:13 #1312 [Verbose] > │             v114.l0 <- v120                                                  │
00:00:13 #1313 [Verbose] > │             ()                                                               │
00:00:13 #1314 [Verbose] > │         let v121 : (struct (int64 * int64) -> int64) = closure4()            │
00:00:13 #1315 [Verbose] > │         let v122 : (struct (int64 * int64) []) = v113 |> Array.sortBy v121   │
00:00:13 #1316 [Verbose] > │         let struct (v123 : int64, v124 : int64) = v122.[int 0]               │
00:00:13 #1317 [Verbose] > │         let v125 : string = $"%A{struct (v123, v124)}"                       │
00:00:13 #1318 [Verbose] > │         let v126 : bool = v92 = v94                                          │
00:00:13 #1319 [Verbose] > │         let v131 : US0 =                                                     │
00:00:13 #1320 [Verbose] > │             if v126 then                                                     │
00:00:13 #1321 [Verbose] > │                 let v127 : System.ConsoleColor =                             │
00:00:13 #1322 [Verbose] > │ System.ConsoleColor.DarkGreen                                                │
00:00:13 #1323 [Verbose] > │                 US0_1(v127)                                                  │
00:00:13 #1324 [Verbose] > │             else                                                             │
00:00:13 #1325 [Verbose] > │                 let v129 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:00:13 #1326 [Verbose] > │                 US0_1(v129)                                                  │
00:00:13 #1327 [Verbose] > │         let v132 : UH2 = UH2_1                                               │
00:00:13 #1328 [Verbose] > │         let v133 : UH2 = UH2_0(v125, v132)                                   │
00:00:13 #1329 [Verbose] > │         let v134 : UH2 = UH2_0(v94, v133)                                    │
00:00:13 #1330 [Verbose] > │         let v135 : UH2 = UH2_0(v92, v134)                                    │
00:00:13 #1331 [Verbose] > │         let v136 : UH2 = UH2_0(v93, v135)                                    │
00:00:13 #1332 [Verbose] > │         v88.[int v91] <- struct (v136, v131)                                 │
00:00:13 #1333 [Verbose] > │         let v137 : uint64 = v91 + 1UL                                        │
00:00:13 #1334 [Verbose] > │         v89.l0 <- v137                                                       │
00:00:13 #1335 [Verbose] > │         ()                                                                   │
00:00:13 #1336 [Verbose] > │     let v138 : string = "Input"                                              │
00:00:13 #1337 [Verbose] > │     let v139 : string = "Expected"                                           │
00:00:13 #1338 [Verbose] > │     let v140 : string = "Result"                                             │
00:00:13 #1339 [Verbose] > │     let v141 : string = "Best"                                               │
00:00:13 #1340 [Verbose] > │     let v142 : UH2 = UH2_1                                                   │
00:00:13 #1341 [Verbose] > │     let v143 : UH2 = UH2_0(v141, v142)                                       │
00:00:13 #1342 [Verbose] > │     let v144 : UH2 = UH2_0(v140, v143)                                       │
00:00:13 #1343 [Verbose] > │     let v145 : UH2 = UH2_0(v139, v144)                                       │
00:00:13 #1344 [Verbose] > │     let v146 : UH2 = UH2_0(v138, v145)                                       │
00:00:13 #1345 [Verbose] > │     let v147 : US0 = US0_0                                                   │
00:00:13 #1346 [Verbose] > │     let v148 : string = "---"                                                │
00:00:13 #1347 [Verbose] > │     let v149 : UH2 = UH2_1                                                   │
00:00:13 #1348 [Verbose] > │     let v150 : UH2 = UH2_0(v148, v149)                                       │
00:00:13 #1349 [Verbose] > │     let v151 : UH2 = UH2_0(v148, v150)                                       │
00:00:13 #1350 [Verbose] > │     let v152 : UH2 = UH2_0(v148, v151)                                       │
00:00:13 #1351 [Verbose] > │     let v153 : UH2 = UH2_0(v148, v152)                                       │
00:00:13 #1352 [Verbose] > │     let v154 : US0 = US0_0                                                   │
00:00:13 #1353 [Verbose] > │     let v155 : UH4 = UH4_1                                                   │
00:00:13 #1354 [Verbose] > │     let v156 : UH4 = UH4_0(v153, v154, v155)                                 │
00:00:13 #1355 [Verbose] > │     let v157 : UH4 = UH4_0(v146, v147, v156)                                 │
00:00:13 #1356 [Verbose] > │     let v158 : (struct (UH2 * US0) []) = method16(v157)                      │
00:00:13 #1357 [Verbose] > │     let v159 : uint64 = System.Convert.ToUInt64 v158.Length                  │
00:00:13 #1358 [Verbose] > │     let v160 : uint64 = System.Convert.ToUInt64 v88.Length                   │
00:00:13 #1359 [Verbose] > │     let v161 : uint64 = v159 + v160                                          │
00:00:13 #1360 [Verbose] > │     let v162 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 *      │
00:00:13 #1361 [Verbose] > │ US0)> (System.Convert.ToInt32(v161))                                         │
00:00:13 #1362 [Verbose] > │     let v163 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #1363 [Verbose] > │     while method4(v161, v163) do                                             │
00:00:13 #1364 [Verbose] > │         let v165 : uint64 = v163.l0                                          │
00:00:13 #1365 [Verbose] > │         let v166 : bool = v165 < v159                                        │
00:00:13 #1366 [Verbose] > │         let struct (v172 : UH2, v173 : US0) =                                │
00:00:13 #1367 [Verbose] > │             if v166 then                                                     │
00:00:13 #1368 [Verbose] > │                 let struct (v167 : UH2, v168 : US0) = v158.[int v165]        │
00:00:13 #1369 [Verbose] > │                 struct (v167, v168)                                          │
00:00:13 #1370 [Verbose] > │             else                                                             │
00:00:13 #1371 [Verbose] > │                 let v169 : uint64 = v165 - v159                              │
00:00:13 #1372 [Verbose] > │                 let struct (v170 : UH2, v171 : US0) = v88.[int v169]         │
00:00:13 #1373 [Verbose] > │                 struct (v170, v171)                                          │
00:00:13 #1374 [Verbose] > │         v162.[int v165] <- struct (v172, v173)                               │
00:00:13 #1375 [Verbose] > │         let v174 : uint64 = v165 + 1UL                                       │
00:00:13 #1376 [Verbose] > │         v163.l0 <- v174                                                      │
00:00:13 #1377 [Verbose] > │         ()                                                                   │
00:00:13 #1378 [Verbose] > │     let v175 : uint64 = System.Convert.ToUInt64 v162.Length                  │
00:00:13 #1379 [Verbose] > │     let v176 : ((string []) []) = Array.zeroCreate<(string [])>              │
00:00:13 #1380 [Verbose] > │ (System.Convert.ToInt32(v175))                                               │
00:00:13 #1381 [Verbose] > │     let v177 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #1382 [Verbose] > │     while method4(v175, v177) do                                             │
00:00:13 #1383 [Verbose] > │         let v179 : uint64 = v177.l0                                          │
00:00:13 #1384 [Verbose] > │         let struct (v180 : UH2, v181 : US0) = v162.[int v179]                │
00:00:13 #1385 [Verbose] > │         let v182 : (string []) = method19(v180)                              │
00:00:13 #1386 [Verbose] > │         v176.[int v179] <- v182                                              │
00:00:13 #1387 [Verbose] > │         let v183 : uint64 = v179 + 1UL                                       │
00:00:13 #1388 [Verbose] > │         v177.l0 <- v183                                                      │
00:00:13 #1389 [Verbose] > │         ()                                                                   │
00:00:13 #1390 [Verbose] > │     let v184 : ((string []) []) = v176 |> Array.transpose                    │
00:00:13 #1391 [Verbose] > │     let v185 : uint64 = System.Convert.ToUInt64 v184.Length                  │
00:00:13 #1392 [Verbose] > │     let v186 : (int64 []) = Array.zeroCreate<int64>                          │
00:00:13 #1393 [Verbose] > │ (System.Convert.ToInt32(v185))                                               │
00:00:13 #1394 [Verbose] > │     let v187 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:13 #1395 [Verbose] > │     while method4(v185, v187) do                                             │
00:00:13 #1396 [Verbose] > │         let v189 : uint64 = v187.l0                                          │
00:00:13 #1397 [Verbose] > │         let v190 : (string []) = v184.[int v189]                             │
00:00:13 #1398 [Verbose] > │         let v191 : uint64 = System.Convert.ToUInt64 v190.Length              │
00:00:13 #1399 [Verbose] > │         let v192 : (int64 []) = Array.zeroCreate<int64>                      │
00:00:13 #1400 [Verbose] > │ (System.Convert.ToInt32(v191))                                               │
00:00:13 #1401 [Verbose] > │         let v193 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:00:13 #1402 [Verbose] > │         while method4(v191, v193) do                                         │
00:00:13 #1403 [Verbose] > │             let v195 : uint64 = v193.l0                                      │
00:00:13 #1404 [Verbose] > │             let v196 : string = v190.[int v195]                              │
00:00:13 #1405 [Verbose] > │             let v197 : int64 = System.Convert.ToInt64 v196.Length            │
00:00:13 #1406 [Verbose] > │             v192.[int v195] <- v197                                          │
00:00:13 #1407 [Verbose] > │             let v198 : uint64 = v195 + 1UL                                   │
00:00:13 #1408 [Verbose] > │             v193.l0 <- v198                                                  │
00:00:13 #1409 [Verbose] > │             ()                                                               │
00:00:13 #1410 [Verbose] > │         let v199 : (int64 []) = v192 |> Array.sortDescending                 │
00:00:13 #1411 [Verbose] > │         let v200 : int64 option = v199 |> Array.tryItem 0                    │
00:00:13 #1412 [Verbose] > │         let v201 : (int64 -> US1) = closure5()                               │
00:00:13 #1413 [Verbose] > │         let v202 : US1 = US1_0                                               │
00:00:13 #1414 [Verbose] > │         let v203 : US1 = v200 |> Option.map v201 |> Option.defaultValue v202 │
00:00:13 #1415 [Verbose] > │         let v206 : int64 =                                                   │
00:00:13 #1416 [Verbose] > │             match v203 with                                                  │
00:00:13 #1417 [Verbose] > │             | US1_0 -> (* None *)                                            │
00:00:13 #1418 [Verbose] > │                 0L                                                           │
00:00:13 #1419 [Verbose] > │             | US1_1(v204) -> (* Some *)                                      │
00:00:13 #1420 [Verbose] > │                 v204                                                         │
00:00:13 #1421 [Verbose] > │         v186.[int v189] <- v206                                              │
00:00:13 #1422 [Verbose] > │         let v207 : uint64 = v189 + 1UL                                       │
00:00:13 #1423 [Verbose] > │         v187.l0 <- v207                                                      │
00:00:13 #1424 [Verbose] > │         ()                                                                   │
00:00:13 #1425 [Verbose] > │     let v208 : uint64 = System.Convert.ToUInt64 v186.Length                  │
00:00:13 #1426 [Verbose] > │     let v209 : UH5 = UH5_1                                                   │
00:00:13 #1427 [Verbose] > │     let v210 : Mut3 = {l0 = 0UL; l1 = v209; l2 = 0} : Mut3                   │
00:00:13 #1428 [Verbose] > │     while method22(v208, v210) do                                            │
00:00:13 #1429 [Verbose] > │         let v212 : uint64 = v210.l0                                          │
00:00:13 #1430 [Verbose] > │         let struct (v213 : UH5, v214 : int32) = v210.l1, v210.l2             │
00:00:13 #1431 [Verbose] > │         let v215 : int64 = v186.[int v212]                                   │
00:00:13 #1432 [Verbose] > │         let v216 : int32 = v214 + 1                                          │
00:00:13 #1433 [Verbose] > │         let v217 : uint64 = v212 + 1UL                                       │
00:00:13 #1434 [Verbose] > │         let v218 : UH5 = UH5_0(v214, v215, v213)                             │
00:00:13 #1435 [Verbose] > │         v210.l0 <- v217                                                      │
00:00:13 #1436 [Verbose] > │         v210.l1 <- v218                                                      │
00:00:13 #1437 [Verbose] > │         v210.l2 <- v216                                                      │
00:00:13 #1438 [Verbose] > │         ()                                                                   │
00:00:13 #1439 [Verbose] > │     let struct (v219 : UH5, v220 : int32) = v210.l1, v210.l2                 │
00:00:13 #1440 [Verbose] > │     let v221 : UH5 = UH5_1                                                   │
00:00:13 #1441 [Verbose] > │     let v222 : UH5 = method23(v219, v221)                                    │
00:00:13 #1442 [Verbose] > │     let v223 : (struct (int32 * int64) []) = method24(v222)                  │
00:00:13 #1443 [Verbose] > │     let v224 : Map<int32, int64> = v223 |> Array.map (fun (struct (a, b)) -> │
00:00:13 #1444 [Verbose] > │ a, b) |> Map.ofArray                                                         │
00:00:13 #1445 [Verbose] > │     let v225 : (struct ((string []) * US0) []) = Array.zeroCreate<struct     │
00:00:13 #1446 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v175))                          │
00:00:13 #1447 [Verbose] > │     let v226 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:14 #1448 [Verbose] > │     while method4(v175, v226) do                                             │
00:00:14 #1449 [Verbose] > │         let v228 : uint64 = v226.l0                                          │
00:00:14 #1450 [Verbose] > │         let struct (v229 : UH2, v230 : US0) = v162.[int v228]                │
00:00:14 #1451 [Verbose] > │         let v231 : UH6 = UH6_1                                               │
00:00:14 #1452 [Verbose] > │         let v232 : int32 = 0                                                 │
00:00:14 #1453 [Verbose] > │         let struct (v233 : UH6, v234 : int32) = method27(v229, v231, v232)   │
00:00:14 #1454 [Verbose] > │         let v235 : UH6 = UH6_1                                               │
00:00:14 #1455 [Verbose] > │         let v236 : UH6 = method28(v233, v235)                                │
00:00:14 #1456 [Verbose] > │         let v237 : UH2 = UH2_1                                               │
00:00:14 #1457 [Verbose] > │         let v238 : UH2 = method29(v224, v236, v237)                          │
00:00:14 #1458 [Verbose] > │         let v239 : (string []) = method30(v238)                              │
00:00:14 #1459 [Verbose] > │         v225.[int v228] <- struct (v239, v230)                               │
00:00:14 #1460 [Verbose] > │         let v240 : uint64 = v228 + 1UL                                       │
00:00:14 #1461 [Verbose] > │         v226.l0 <- v240                                                      │
00:00:14 #1462 [Verbose] > │         ()                                                                   │
00:00:14 #1463 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:14 #1464 [Verbose] > │     let v241 : uint64 = System.Convert.ToUInt64 v225.Length                  │
00:00:14 #1465 [Verbose] > │     let v242 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:14 #1466 [Verbose] > │     while method4(v241, v242) do                                             │
00:00:14 #1467 [Verbose] > │         let v244 : uint64 = v242.l0                                          │
00:00:14 #1468 [Verbose] > │         let struct (v245 : (string []), v246 : US0) = v225.[int v244]        │
00:00:14 #1469 [Verbose] > │         match v246 with                                                      │
00:00:14 #1470 [Verbose] > │         | US0_0 -> (* None *)                                                │
00:00:14 #1471 [Verbose] > │             let mutable result = None                                        │
00:00:14 #1472 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:14 #1473 [Verbose] > │             #if !WASM                                                        │
00:00:14 #1474 [Verbose] > │             ()                                                               │
00:00:14 #1475 [Verbose] > │             #else                                                            │
00:00:14 #1476 [Verbose] > │             ()                                                               │
00:00:14 #1477 [Verbose] > │             #endif                                                           │
00:00:14 #1478 [Verbose] > │             #else                                                            │
00:00:14 #1479 [Verbose] > │             System.Console.ResetColor ()                                     │
00:00:14 #1480 [Verbose] > │             ()                                                               │
00:00:14 #1481 [Verbose] > │             #endif                                                           │
00:00:14 #1482 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:14 #1483 [Verbose] > │             result |> Option.get                                             │
00:00:14 #1484 [Verbose] > │             ()                                                               │
00:00:14 #1485 [Verbose] > │         | US0_1(v247) -> (* Some *)                                          │
00:00:14 #1486 [Verbose] > │             let mutable result = None                                        │
00:00:14 #1487 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:14 #1488 [Verbose] > │             #if !WASM                                                        │
00:00:14 #1489 [Verbose] > │             ()                                                               │
00:00:14 #1490 [Verbose] > │             #else                                                            │
00:00:14 #1491 [Verbose] > │             ()                                                               │
00:00:14 #1492 [Verbose] > │             #endif                                                           │
00:00:14 #1493 [Verbose] > │             #else                                                            │
00:00:14 #1494 [Verbose] > │             System.Console.ForegroundColor <- v247                           │
00:00:14 #1495 [Verbose] > │             ()                                                               │
00:00:14 #1496 [Verbose] > │             #endif                                                           │
00:00:14 #1497 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:14 #1498 [Verbose] > │             result |> Option.get                                             │
00:00:14 #1499 [Verbose] > │             ()                                                               │
00:00:14 #1500 [Verbose] > │         let v248 : string = "\t| "                                           │
00:00:14 #1501 [Verbose] > │         let v249 : string = System.String.Join (v248, v245)                  │
00:00:14 #1502 [Verbose] > │         System.Console.WriteLine v249                                        │
00:00:14 #1503 [Verbose] > │         let mutable result = None                                            │
00:00:14 #1504 [Verbose] > │         #if FABLE_COMPILER_RUST                                              │
00:00:14 #1505 [Verbose] > │         #if !WASM                                                            │
00:00:14 #1506 [Verbose] > │         ()                                                                   │
00:00:14 #1507 [Verbose] > │         #else                                                                │
00:00:14 #1508 [Verbose] > │         ()                                                                   │
00:00:14 #1509 [Verbose] > │         #endif                                                               │
00:00:14 #1510 [Verbose] > │         #else                                                                │
00:00:14 #1511 [Verbose] > │         System.Console.ResetColor ()                                         │
00:00:14 #1512 [Verbose] > │         ()                                                                   │
00:00:14 #1513 [Verbose] > │         #endif                                                               │
00:00:14 #1514 [Verbose] > │         |> fun x -> result <- Some x                                         │
00:00:14 #1515 [Verbose] > │         result |> Option.get                                                 │
00:00:14 #1516 [Verbose] > │         let v250 : uint64 = v244 + 1UL                                       │
00:00:14 #1517 [Verbose] > │         v242.l0 <- v250                                                      │
00:00:14 #1518 [Verbose] > │         ()                                                                   │
00:00:14 #1519 [Verbose] > │     let v251 : ((float []) []) = Array.zeroCreate<(float [])>                │
00:00:14 #1520 [Verbose] > │ (System.Convert.ToInt32(v87))                                                │
00:00:14 #1521 [Verbose] > │     let v252 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:14 #1522 [Verbose] > │     while method4(v87, v252) do                                              │
00:00:14 #1523 [Verbose] > │         let v254 : uint64 = v252.l0                                          │
00:00:14 #1524 [Verbose] > │         let struct (v255 : string, v256 : string, v257 : string, v258 :      │
00:00:14 #1525 [Verbose] > │ (int64 [])) = v11.[int v254]                                                 │
00:00:14 #1526 [Verbose] > │         let v259 : (int64 -> float) = float                                  │
00:00:14 #1527 [Verbose] > │         let v260 : uint64 = System.Convert.ToUInt64 v258.Length              │
00:00:14 #1528 [Verbose] > │         let v261 : (float []) = Array.zeroCreate<float>                      │
00:00:14 #1529 [Verbose] > │ (System.Convert.ToInt32(v260))                                               │
00:00:14 #1530 [Verbose] > │         let v262 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:00:14 #1531 [Verbose] > │         while method4(v260, v262) do                                         │
00:00:14 #1532 [Verbose] > │             let v264 : uint64 = v262.l0                                      │
00:00:14 #1533 [Verbose] > │             let v265 : int64 = v258.[int v264]                               │
00:00:14 #1534 [Verbose] > │             let v266 : float = v259 v265                                     │
00:00:14 #1535 [Verbose] > │             v261.[int v264] <- v266                                          │
00:00:14 #1536 [Verbose] > │             let v267 : uint64 = v264 + 1UL                                   │
00:00:14 #1537 [Verbose] > │             v262.l0 <- v267                                                  │
00:00:14 #1538 [Verbose] > │             ()                                                               │
00:00:14 #1539 [Verbose] > │         v251.[int v254] <- v261                                              │
00:00:14 #1540 [Verbose] > │         let v268 : uint64 = v254 + 1UL                                       │
00:00:14 #1541 [Verbose] > │         v252.l0 <- v268                                                      │
00:00:14 #1542 [Verbose] > │         ()                                                                   │
00:00:14 #1543 [Verbose] > │     let v269 : ((float []) []) = v251 |> Array.transpose                     │
00:00:14 #1544 [Verbose] > │     let v270 : uint64 = System.Convert.ToUInt64 v269.Length                  │
00:00:14 #1545 [Verbose] > │     let v271 : (float []) = Array.zeroCreate<float>                          │
00:00:14 #1546 [Verbose] > │ (System.Convert.ToInt32(v270))                                               │
00:00:14 #1547 [Verbose] > │     let v272 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:14 #1548 [Verbose] > │     while method4(v270, v272) do                                             │
00:00:14 #1549 [Verbose] > │         let v274 : uint64 = v272.l0                                          │
00:00:14 #1550 [Verbose] > │         let v275 : (float []) = v269.[int v274]                              │
00:00:14 #1551 [Verbose] > │         let v276 : float = v275 |> Array.average                             │
00:00:14 #1552 [Verbose] > │         v271.[int v274] <- v276                                              │
00:00:14 #1553 [Verbose] > │         let v277 : uint64 = v274 + 1UL                                       │
00:00:14 #1554 [Verbose] > │         v272.l0 <- v277                                                      │
00:00:14 #1555 [Verbose] > │         ()                                                                   │
00:00:14 #1556 [Verbose] > │     let v278 : (float -> int64) = int64                                      │
00:00:14 #1557 [Verbose] > │     let v279 : uint64 = System.Convert.ToUInt64 v271.Length                  │
00:00:14 #1558 [Verbose] > │     let v280 : (int64 []) = Array.zeroCreate<int64>                          │
00:00:14 #1559 [Verbose] > │ (System.Convert.ToInt32(v279))                                               │
00:00:14 #1560 [Verbose] > │     let v281 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:14 #1561 [Verbose] > │     while method4(v279, v281) do                                             │
00:00:14 #1562 [Verbose] > │         let v283 : uint64 = v281.l0                                          │
00:00:14 #1563 [Verbose] > │         let v284 : float = v271.[int v283]                                   │
00:00:14 #1564 [Verbose] > │         let v285 : int64 = v278 v284                                         │
00:00:14 #1565 [Verbose] > │         v280.[int v283] <- v285                                              │
00:00:14 #1566 [Verbose] > │         let v286 : uint64 = v283 + 1UL                                       │
00:00:14 #1567 [Verbose] > │         v281.l0 <- v286                                                      │
00:00:14 #1568 [Verbose] > │         ()                                                                   │
00:00:14 #1569 [Verbose] > │     let v287 : uint64 = System.Convert.ToUInt64 v280.Length                  │
00:00:14 #1570 [Verbose] > │     let v288 : UH5 = UH5_1                                                   │
00:00:14 #1571 [Verbose] > │     let v289 : Mut3 = {l0 = 0UL; l1 = v288; l2 = 0} : Mut3                   │
00:00:14 #1572 [Verbose] > │     while method22(v287, v289) do                                            │
00:00:14 #1573 [Verbose] > │         let v291 : uint64 = v289.l0                                          │
00:00:14 #1574 [Verbose] > │         let struct (v292 : UH5, v293 : int32) = v289.l1, v289.l2             │
00:00:14 #1575 [Verbose] > │         let v294 : int64 = v280.[int v291]                                   │
00:00:14 #1576 [Verbose] > │         let v295 : int32 = v293 + 1                                          │
00:00:14 #1577 [Verbose] > │         let v296 : uint64 = v291 + 1UL                                       │
00:00:14 #1578 [Verbose] > │         let v297 : UH5 = UH5_0(v293, v294, v292)                             │
00:00:14 #1579 [Verbose] > │         v289.l0 <- v296                                                      │
00:00:14 #1580 [Verbose] > │         v289.l1 <- v297                                                      │
00:00:14 #1581 [Verbose] > │         v289.l2 <- v295                                                      │
00:00:14 #1582 [Verbose] > │         ()                                                                   │
00:00:14 #1583 [Verbose] > │     let struct (v298 : UH5, v299 : int32) = v289.l1, v289.l2                 │
00:00:14 #1584 [Verbose] > │     let v300 : UH5 = UH5_1                                                   │
00:00:14 #1585 [Verbose] > │     let v301 : UH5 = method23(v298, v300)                                    │
00:00:14 #1586 [Verbose] > │     let v302 : (struct (int32 * int64) []) = method33(v301)                  │
00:00:14 #1587 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:14 #1588 [Verbose] > │     let v303 : string = "Average Ranking  "                                  │
00:00:14 #1589 [Verbose] > │     System.Console.WriteLine v303                                            │
00:00:14 #1590 [Verbose] > │     let v304 : (struct (int32 * int64) -> int64) = closure6()                │
00:00:14 #1591 [Verbose] > │     let v305 : (struct (int32 * int64) []) = v302 |> Array.sortBy v304       │
00:00:14 #1592 [Verbose] > │     let v306 : uint64 = System.Convert.ToUInt64 v305.Length                  │
00:00:14 #1593 [Verbose] > │     let v307 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:14 #1594 [Verbose] > │     while method4(v306, v307) do                                             │
00:00:14 #1595 [Verbose] > │         let v309 : uint64 = v307.l0                                          │
00:00:14 #1596 [Verbose] > │         let struct (v310 : int32, v311 : int64) = v305.[int v309]            │
00:00:14 #1597 [Verbose] > │         let v312 : string = $"Test case %d{v310 + 1}. Average Time: %A{v311} │
00:00:14 #1598 [Verbose] > │ "                                                                            │
00:00:14 #1599 [Verbose] > │         System.Console.WriteLine v312                                        │
00:00:14 #1600 [Verbose] > │         let v313 : uint64 = v309 + 1UL                                       │
00:00:14 #1601 [Verbose] > │         v307.l0 <- v313                                                      │
00:00:14 #1602 [Verbose] > │         ()                                                                   │
00:00:14 #1603 [Verbose] > │     ()                                                                       │
00:00:14 #1604 [Verbose] > │ method0()                                                                    │
00:00:14 #1605 [Verbose] > │                                                                              │
00:00:14 #1606 [Verbose] > │                                                                              │
00:00:14 #1607 [Verbose] > │                                                                              │
00:00:14 #1608 [Verbose] > │ Test: v0                                                                     │
00:00:14 #1609 [Verbose] > │                                                                              │
00:00:14 #1610 [Verbose] > │ Solution: struct ("a", "a")                                                  │
00:00:14 #1611 [Verbose] > │ Test case 1. A. Time: 24                                                     │
00:00:14 #1612 [Verbose] > │ Test case 2. B. Time: 14                                                     │
00:00:14 #1613 [Verbose] > │                                                                              │
00:00:14 #1614 [Verbose] > │ Solution: struct ("b", "b")                                                  │
00:00:14 #1615 [Verbose] > │ Test case 1. A. Time: 13                                                     │
00:00:14 #1616 [Verbose] > │ Test case 2. B. Time: 15                                                     │
00:00:14 #1617 [Verbose] > │                                                                              │
00:00:14 #1618 [Verbose] > │ Input            	| Expected	| Result	| Best                                       │
00:00:14 #1619 [Verbose] > │ ---              	| ---     	| ---   	| ---                                        │
00:00:14 #1620 [Verbose] > │ struct ("a", "a")	| "a"     	| "a"   	| struct (2L, 14L)                           │
00:00:14 #1621 [Verbose] > │ struct ("b", "b")	| "b"     	| "b"   	| struct (1L, 13L)                           │
00:00:14 #1622 [Verbose] > │                                                                              │
00:00:14 #1623 [Verbose] > │ Average Ranking                                                              │
00:00:14 #1624 [Verbose] > │ Test case 2. Average Time: 14L                                               │
00:00:14 #1625 [Verbose] > │ Test case 1. Average Time: 18L                                               │
00:00:14 #1626 [Verbose] > │                                                                              │
00:00:14 #1627 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1628 [Verbose] >
00:00:14 #1629 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #1630 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #1631 [Verbose] > │ ## emptyTests                                                                │
00:00:14 #1632 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1633 [Verbose] >
00:00:14 #1634 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #1635 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #1636 [Verbose] > │ Test: Empty                                                                  │
00:00:14 #1637 [Verbose] > │                                                                              │
00:00:14 #1638 [Verbose] > │ Solution: 0                                                                  │
00:00:14 #1639 [Verbose] > │ Test case 1. A. Time: 61L                                                    │
00:00:14 #1640 [Verbose] > │                                                                              │
00:00:14 #1641 [Verbose] > │ Solution: 2                                                                  │
00:00:14 #1642 [Verbose] > │ Test case 1. A. Time: 62L                                                    │
00:00:14 #1643 [Verbose] > │                                                                              │
00:00:14 #1644 [Verbose] > │ Solution: 5                                                                  │
00:00:14 #1645 [Verbose] > │ Test case 1. A. Time: 70L                                                    │
00:00:14 #1646 [Verbose] > │                                                                              │
00:00:14 #1647 [Verbose] > │ Input   | Expected        | Result  | Best                                   │
00:00:14 #1648 [Verbose] > │ ---     | ---             | ---     | ---                                    │
00:00:14 #1649 [Verbose] > │ 0       | 0               | 0       | (1, 61)                                │
00:00:14 #1650 [Verbose] > │ 2       | 2               | 2       | (1, 62)                                │
00:00:14 #1651 [Verbose] > │ 5       | 5               | 5       | (1, 70)                                │
00:00:14 #1652 [Verbose] > │                                                                              │
00:00:14 #1653 [Verbose] > │ Averages                                                                     │
00:00:14 #1654 [Verbose] > │ Test case 1. Average Time: 64L                                               │
00:00:14 #1655 [Verbose] > │                                                                              │
00:00:14 #1656 [Verbose] > │ Ranking                                                                      │
00:00:14 #1657 [Verbose] > │ Test case 1. Average Time: 64L                                               │
00:00:14 #1658 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1659 [Verbose] >
00:00:14 #1660 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #1661 [Verbose] > // // test
00:00:14 #1662 [Verbose] >
00:00:14 #1663 [Verbose] > inl get_solutions () =
00:00:14 #1664 [Verbose] >     [[
00:00:14 #1665 [Verbose] >         "A",
00:00:14 #1666 [Verbose] >         fun n =>
00:00:14 #1667 [Verbose] >             n + 1f64
00:00:14 #1668 [Verbose] >     ]]
00:00:14 #1669 [Verbose] >
00:00:14 #1670 [Verbose] > inl rec empty_1_tests () =
00:00:14 #1671 [Verbose] >     inl test_cases = [[
00:00:14 #1672 [Verbose] >         0, 1
00:00:14 #1673 [Verbose] >         2, 3
00:00:14 #1674 [Verbose] >         5, 6
00:00:14 #1675 [Verbose] >     ]]
00:00:14 #1676 [Verbose] >
00:00:14 #1677 [Verbose] >     inl solutions = get_solutions ()
00:00:14 #1678 [Verbose] >
00:00:14 #1679 [Verbose] >     // inl is_fast () = true
00:00:14 #1680 [Verbose] >
00:00:14 #1681 [Verbose] >     inl count =
00:00:14 #1682 [Verbose] >         if is_fast ()
00:00:14 #1683 [Verbose] >         then 1000i32
00:00:14 #1684 [Verbose] >         else 2000000i32
00:00:14 #1685 [Verbose] >
00:00:14 #1686 [Verbose] >     run_all (nameof empty_1_tests) count solutions test_cases
00:00:14 #1687 [Verbose] >     |> sort_result_list
00:00:14 #1688 [Verbose] >
00:00:14 #1689 [Verbose] > empty_1_tests ()
00:00:14 #1690 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-0192-9239-9280f74db011/main.spi
00:00:17 #1691 [Verbose] >
00:00:17 #1692 [Verbose] > ╭─[ 3.15s - stdout ]───────────────────────────────────────────────────────────╮
00:00:17 #1693 [Verbose] > │ type UH0 =                                                                   │
00:00:17 #1694 [Verbose] > │     | UH0_0 of float * float * UH0                                           │
00:00:17 #1695 [Verbose] > │     | UH0_1                                                                  │
00:00:17 #1696 [Verbose] > │ and Mut0 = {mutable l0 : uint64}                                             │
00:00:17 #1697 [Verbose] > │ and UH1 =                                                                    │
00:00:17 #1698 [Verbose] > │     | UH1_0 of int32 * string * (float -> float) * UH1                       │
00:00:17 #1699 [Verbose] > │     | UH1_1                                                                  │
00:00:17 #1700 [Verbose] > │ and Mut1 = {mutable l0 : int32}                                              │
00:00:17 #1701 [Verbose] > │ and UH2 =                                                                    │
00:00:17 #1702 [Verbose] > │     | UH2_0 of string * UH2                                                  │
00:00:17 #1703 [Verbose] > │     | UH2_1                                                                  │
00:00:17 #1704 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:17 #1705 [Verbose] > │     | US0_0                                                                  │
00:00:17 #1706 [Verbose] > │     | US0_1 of f1_0 : System.ConsoleColor                                    │
00:00:17 #1707 [Verbose] > │ and UH3 =                                                                    │
00:00:17 #1708 [Verbose] > │     | UH3_0 of int64 * int64 * UH3                                           │
00:00:17 #1709 [Verbose] > │     | UH3_1                                                                  │
00:00:17 #1710 [Verbose] > │ and Mut2 = {mutable l0 : uint64; mutable l1 : UH3; mutable l2 : int64}       │
00:00:17 #1711 [Verbose] > │ and UH4 =                                                                    │
00:00:17 #1712 [Verbose] > │     | UH4_0 of UH2 * US0 * UH4                                               │
00:00:17 #1713 [Verbose] > │     | UH4_1                                                                  │
00:00:17 #1714 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:17 #1715 [Verbose] > │     | US1_0                                                                  │
00:00:17 #1716 [Verbose] > │     | US1_1 of f1_0 : int64                                                  │
00:00:17 #1717 [Verbose] > │ and UH5 =                                                                    │
00:00:17 #1718 [Verbose] > │     | UH5_0 of int32 * int64 * UH5                                           │
00:00:17 #1719 [Verbose] > │     | UH5_1                                                                  │
00:00:17 #1720 [Verbose] > │ and Mut3 = {mutable l0 : uint64; mutable l1 : UH5; mutable l2 : int32}       │
00:00:17 #1721 [Verbose] > │ and UH6 =                                                                    │
00:00:17 #1722 [Verbose] > │     | UH6_0 of int32 * string * UH6                                          │
00:00:17 #1723 [Verbose] > │     | UH6_1                                                                  │
00:00:17 #1724 [Verbose] > │ let rec method2 (v0 : UH0, v1 : uint64) : uint64 =                           │
00:00:17 #1725 [Verbose] > │     match v0 with                                                            │
00:00:17 #1726 [Verbose] > │     | UH0_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:17 #1727 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:00:17 #1728 [Verbose] > │         method2(v4, v5)                                                      │
00:00:17 #1729 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:17 #1730 [Verbose] > │         v1                                                                   │
00:00:17 #1731 [Verbose] > │ and method3 (v0 : (struct (float * float) []), v1 : UH0, v2 : uint64) :      │
00:00:17 #1732 [Verbose] > │ uint64 =                                                                     │
00:00:17 #1733 [Verbose] > │     match v1 with                                                            │
00:00:17 #1734 [Verbose] > │     | UH0_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:17 #1735 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:17 #1736 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:00:17 #1737 [Verbose] > │         method3(v0, v5, v6)                                                  │
00:00:17 #1738 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:17 #1739 [Verbose] > │         v2                                                                   │
00:00:17 #1740 [Verbose] > │ and method1 (v0 : UH0) : (struct (float * float) []) =                       │
00:00:17 #1741 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:17 #1742 [Verbose] > │     let v2 : uint64 = method2(v0, v1)                                        │
00:00:17 #1743 [Verbose] > │     let v3 : (struct (float * float) []) = Array.zeroCreate<struct (float *  │
00:00:17 #1744 [Verbose] > │ float)> (System.Convert.ToInt32(v2))                                         │
00:00:17 #1745 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:17 #1746 [Verbose] > │     let v5 : uint64 = method3(v3, v0, v4)                                    │
00:00:17 #1747 [Verbose] > │     v3                                                                       │
00:00:17 #1748 [Verbose] > │ and method4 (v0 : uint64, v1 : Mut0) : bool =                                │
00:00:17 #1749 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:00:17 #1750 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:17 #1751 [Verbose] > │     v3                                                                       │
00:00:17 #1752 [Verbose] > │ and closure1 () (v0 : float) : float =                                       │
00:00:17 #1753 [Verbose] > │     let v1 : float = v0 + 1.0                                                │
00:00:17 #1754 [Verbose] > │     v1                                                                       │
00:00:17 #1755 [Verbose] > │ and method6 (v0 : UH1, v1 : uint64) : uint64 =                               │
00:00:17 #1756 [Verbose] > │     match v0 with                                                            │
00:00:17 #1757 [Verbose] > │     | UH1_0(v2, v3, v4, v5) -> (* Cons *)                                    │
00:00:17 #1758 [Verbose] > │         let v6 : uint64 = v1 + 1UL                                           │
00:00:17 #1759 [Verbose] > │         method6(v5, v6)                                                      │
00:00:17 #1760 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:17 #1761 [Verbose] > │         v1                                                                   │
00:00:17 #1762 [Verbose] > │ and method7 (v0 : (struct (int32 * string * (float -> float)) []), v1 : UH1, │
00:00:17 #1763 [Verbose] > │ v2 : uint64) : uint64 =                                                      │
00:00:17 #1764 [Verbose] > │     match v1 with                                                            │
00:00:17 #1765 [Verbose] > │     | UH1_0(v3, v4, v5, v6) -> (* Cons *)                                    │
00:00:17 #1766 [Verbose] > │         v0.[int v2] <- struct (v3, v4, v5)                                   │
00:00:17 #1767 [Verbose] > │         let v7 : uint64 = v2 + 1UL                                           │
00:00:17 #1768 [Verbose] > │         method7(v0, v6, v7)                                                  │
00:00:17 #1769 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:17 #1770 [Verbose] > │         v2                                                                   │
00:00:17 #1771 [Verbose] > │ and method5 (v0 : UH1) : (struct (int32 * string * (float -> float)) []) =   │
00:00:17 #1772 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:17 #1773 [Verbose] > │     let v2 : uint64 = method6(v0, v1)                                        │
00:00:17 #1774 [Verbose] > │     let v3 : (struct (int32 * string * (float -> float)) []) =               │
00:00:17 #1775 [Verbose] > │ Array.zeroCreate<struct (int32 * string * (float -> float))>                 │
00:00:17 #1776 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:00:17 #1777 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:17 #1778 [Verbose] > │     let v5 : uint64 = method7(v3, v0, v4)                                    │
00:00:17 #1779 [Verbose] > │     v3                                                                       │
00:00:17 #1780 [Verbose] > │ and method8 (v0 : Mut1) : bool =                                             │
00:00:17 #1781 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:17 #1782 [Verbose] > │     let v2 : bool = v1 < 2000001                                             │
00:00:17 #1783 [Verbose] > │     v2                                                                       │
00:00:17 #1784 [Verbose] > │ and closure2 (v0 : float, v1 : (float -> float)) (v2 : int32) : float =      │
00:00:17 #1785 [Verbose] > │     v1 v0                                                                    │
00:00:17 #1786 [Verbose] > │ and method9 (v0 : float, v1 : (float []), v2 : uint64) : bool =              │
00:00:17 #1787 [Verbose] > │     let v3 : uint64 = System.Convert.ToUInt64 v1.Length                      │
00:00:17 #1788 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:00:17 #1789 [Verbose] > │     if v4 then                                                               │
00:00:17 #1790 [Verbose] > │         let v5 : float = v1.[int v2]                                         │
00:00:17 #1791 [Verbose] > │         let v6 : bool = v0 = v5                                              │
00:00:17 #1792 [Verbose] > │         if v6 then                                                           │
00:00:17 #1793 [Verbose] > │             let v7 : uint64 = v2 + 1UL                                       │
00:00:17 #1794 [Verbose] > │             method9(v0, v1, v7)                                              │
00:00:17 #1795 [Verbose] > │         else                                                                 │
00:00:17 #1796 [Verbose] > │             false                                                            │
00:00:17 #1797 [Verbose] > │     else                                                                     │
00:00:17 #1798 [Verbose] > │         true                                                                 │
00:00:17 #1799 [Verbose] > │ and method10 (v0 : uint64, v1 : Mut2) : bool =                               │
00:00:17 #1800 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:00:17 #1801 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:17 #1802 [Verbose] > │     v3                                                                       │
00:00:17 #1803 [Verbose] > │ and method11 (v0 : UH3, v1 : UH3) : UH3 =                                    │
00:00:17 #1804 [Verbose] > │     match v0 with                                                            │
00:00:17 #1805 [Verbose] > │     | UH3_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:17 #1806 [Verbose] > │         let v5 : UH3 = UH3_0(v2, v3, v1)                                     │
00:00:17 #1807 [Verbose] > │         method11(v4, v5)                                                     │
00:00:17 #1808 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:00:17 #1809 [Verbose] > │         v1                                                                   │
00:00:17 #1810 [Verbose] > │ and method13 (v0 : UH3, v1 : int32) : int32 =                                │
00:00:17 #1811 [Verbose] > │     match v0 with                                                            │
00:00:17 #1812 [Verbose] > │     | UH3_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:17 #1813 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:00:17 #1814 [Verbose] > │         method13(v4, v5)                                                     │
00:00:17 #1815 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:00:17 #1816 [Verbose] > │         v1                                                                   │
00:00:17 #1817 [Verbose] > │ and method14 (v0 : (struct (int64 * int64) []), v1 : UH3, v2 : int32) :      │
00:00:17 #1818 [Verbose] > │ int32 =                                                                      │
00:00:17 #1819 [Verbose] > │     match v1 with                                                            │
00:00:17 #1820 [Verbose] > │     | UH3_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:17 #1821 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:17 #1822 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:00:17 #1823 [Verbose] > │         method14(v0, v5, v6)                                                 │
00:00:17 #1824 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:00:17 #1825 [Verbose] > │         v2                                                                   │
00:00:17 #1826 [Verbose] > │ and method12 (v0 : UH3) : (struct (int64 * int64) []) =                      │
00:00:17 #1827 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:17 #1828 [Verbose] > │     let v2 : int32 = method13(v0, v1)                                        │
00:00:17 #1829 [Verbose] > │     let v3 : (struct (int64 * int64) []) = Array.zeroCreate<struct (int64 *  │
00:00:17 #1830 [Verbose] > │ int64)> (v2)                                                                 │
00:00:17 #1831 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:17 #1832 [Verbose] > │     let v5 : int32 = method14(v3, v0, v4)                                    │
00:00:17 #1833 [Verbose] > │     v3                                                                       │
00:00:17 #1834 [Verbose] > │ and method15 (v0 : int32, v1 : Mut1) : bool =                                │
00:00:17 #1835 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:17 #1836 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:17 #1837 [Verbose] > │     v3                                                                       │
00:00:17 #1838 [Verbose] > │ and closure3 () struct (v0 : int64, v1 : int64) : int64 =                    │
00:00:17 #1839 [Verbose] > │     v1                                                                       │
00:00:17 #1840 [Verbose] > │ and method17 (v0 : UH4, v1 : uint64) : uint64 =                              │
00:00:17 #1841 [Verbose] > │     match v0 with                                                            │
00:00:17 #1842 [Verbose] > │     | UH4_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:17 #1843 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:00:17 #1844 [Verbose] > │         method17(v4, v5)                                                     │
00:00:17 #1845 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:17 #1846 [Verbose] > │         v1                                                                   │
00:00:17 #1847 [Verbose] > │ and method18 (v0 : (struct (UH2 * US0) []), v1 : UH4, v2 : uint64) : uint64  │
00:00:17 #1848 [Verbose] > │ =                                                                            │
00:00:17 #1849 [Verbose] > │     match v1 with                                                            │
00:00:17 #1850 [Verbose] > │     | UH4_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:17 #1851 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:17 #1852 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:00:17 #1853 [Verbose] > │         method18(v0, v5, v6)                                                 │
00:00:17 #1854 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:17 #1855 [Verbose] > │         v2                                                                   │
00:00:17 #1856 [Verbose] > │ and method16 (v0 : UH4) : (struct (UH2 * US0) []) =                          │
00:00:17 #1857 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:17 #1858 [Verbose] > │     let v2 : uint64 = method17(v0, v1)                                       │
00:00:17 #1859 [Verbose] > │     let v3 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)>  │
00:00:17 #1860 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:00:17 #1861 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:17 #1862 [Verbose] > │     let v5 : uint64 = method18(v3, v0, v4)                                   │
00:00:17 #1863 [Verbose] > │     v3                                                                       │
00:00:17 #1864 [Verbose] > │ and method20 (v0 : UH2, v1 : uint64) : uint64 =                              │
00:00:17 #1865 [Verbose] > │     match v0 with                                                            │
00:00:17 #1866 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:00:17 #1867 [Verbose] > │         let v4 : uint64 = v1 + 1UL                                           │
00:00:17 #1868 [Verbose] > │         method20(v3, v4)                                                     │
00:00:17 #1869 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:17 #1870 [Verbose] > │         v1                                                                   │
00:00:17 #1871 [Verbose] > │ and method21 (v0 : (string []), v1 : UH2, v2 : uint64) : uint64 =            │
00:00:17 #1872 [Verbose] > │     match v1 with                                                            │
00:00:17 #1873 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:00:17 #1874 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:17 #1875 [Verbose] > │         let v5 : uint64 = v2 + 1UL                                           │
00:00:17 #1876 [Verbose] > │         method21(v0, v4, v5)                                                 │
00:00:17 #1877 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:17 #1878 [Verbose] > │         v2                                                                   │
00:00:17 #1879 [Verbose] > │ and method19 (v0 : UH2) : (string []) =                                      │
00:00:17 #1880 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:17 #1881 [Verbose] > │     let v2 : uint64 = method20(v0, v1)                                       │
00:00:17 #1882 [Verbose] > │     let v3 : (string []) = Array.zeroCreate<string>                          │
00:00:17 #1883 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:00:17 #1884 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:17 #1885 [Verbose] > │     let v5 : uint64 = method21(v3, v0, v4)                                   │
00:00:17 #1886 [Verbose] > │     v3                                                                       │
00:00:17 #1887 [Verbose] > │ and closure4 () (v0 : int64) : US1 =                                         │
00:00:17 #1888 [Verbose] > │     US1_1(v0)                                                                │
00:00:17 #1889 [Verbose] > │ and method22 (v0 : uint64, v1 : Mut3) : bool =                               │
00:00:17 #1890 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:00:17 #1891 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:17 #1892 [Verbose] > │     v3                                                                       │
00:00:17 #1893 [Verbose] > │ and method23 (v0 : UH5, v1 : UH5) : UH5 =                                    │
00:00:17 #1894 [Verbose] > │     match v0 with                                                            │
00:00:17 #1895 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:17 #1896 [Verbose] > │         let v5 : UH5 = UH5_0(v2, v3, v1)                                     │
00:00:17 #1897 [Verbose] > │         method23(v4, v5)                                                     │
00:00:17 #1898 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:17 #1899 [Verbose] > │         v1                                                                   │
00:00:17 #1900 [Verbose] > │ and method25 (v0 : UH5, v1 : int32) : int32 =                                │
00:00:17 #1901 [Verbose] > │     match v0 with                                                            │
00:00:17 #1902 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:17 #1903 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:00:17 #1904 [Verbose] > │         method25(v4, v5)                                                     │
00:00:17 #1905 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:17 #1906 [Verbose] > │         v1                                                                   │
00:00:17 #1907 [Verbose] > │ and method26 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : int32) :      │
00:00:17 #1908 [Verbose] > │ int32 =                                                                      │
00:00:17 #1909 [Verbose] > │     match v1 with                                                            │
00:00:17 #1910 [Verbose] > │     | UH5_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:17 #1911 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:17 #1912 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:00:17 #1913 [Verbose] > │         method26(v0, v5, v6)                                                 │
00:00:17 #1914 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:17 #1915 [Verbose] > │         v2                                                                   │
00:00:17 #1916 [Verbose] > │ and method24 (v0 : UH5) : (struct (int32 * int64) []) =                      │
00:00:17 #1917 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:17 #1918 [Verbose] > │     let v2 : int32 = method25(v0, v1)                                        │
00:00:17 #1919 [Verbose] > │     let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 *  │
00:00:17 #1920 [Verbose] > │ int64)> (v2)                                                                 │
00:00:17 #1921 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:17 #1922 [Verbose] > │     let v5 : int32 = method26(v3, v0, v4)                                    │
00:00:17 #1923 [Verbose] > │     v3                                                                       │
00:00:17 #1924 [Verbose] > │ and method27 (v0 : UH2, v1 : UH6, v2 : int32) : struct (UH6 * int32) =       │
00:00:17 #1925 [Verbose] > │     match v0 with                                                            │
00:00:17 #1926 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:00:17 #1927 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:17 #1928 [Verbose] > │         let v6 : UH6 = UH6_0(v2, v3, v1)                                     │
00:00:17 #1929 [Verbose] > │         method27(v4, v6, v5)                                                 │
00:00:17 #1930 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:17 #1931 [Verbose] > │         struct (v1, v2)                                                      │
00:00:17 #1932 [Verbose] > │ and method28 (v0 : UH6, v1 : UH6) : UH6 =                                    │
00:00:17 #1933 [Verbose] > │     match v0 with                                                            │
00:00:17 #1934 [Verbose] > │     | UH6_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:17 #1935 [Verbose] > │         let v5 : UH6 = UH6_0(v2, v3, v1)                                     │
00:00:17 #1936 [Verbose] > │         method28(v4, v5)                                                     │
00:00:17 #1937 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:17 #1938 [Verbose] > │         v1                                                                   │
00:00:17 #1939 [Verbose] > │ and method29 (v0 : Map<int32, int64>, v1 : UH6, v2 : UH2) : UH2 =            │
00:00:17 #1940 [Verbose] > │     match v1 with                                                            │
00:00:17 #1941 [Verbose] > │     | UH6_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:17 #1942 [Verbose] > │         let v6 : UH2 = method29(v0, v5, v2)                                  │
00:00:17 #1943 [Verbose] > │         let v7 : int64 = v0.[v3]                                             │
00:00:17 #1944 [Verbose] > │         let v8 : int32 = int32 v7                                            │
00:00:17 #1945 [Verbose] > │         let v9 : string = v4.PadRight v8                                     │
00:00:17 #1946 [Verbose] > │         UH2_0(v9, v6)                                                        │
00:00:17 #1947 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:17 #1948 [Verbose] > │         v2                                                                   │
00:00:17 #1949 [Verbose] > │ and method31 (v0 : UH2, v1 : int32) : int32 =                                │
00:00:17 #1950 [Verbose] > │     match v0 with                                                            │
00:00:17 #1951 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:00:17 #1952 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:17 #1953 [Verbose] > │         method31(v3, v4)                                                     │
00:00:17 #1954 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:17 #1955 [Verbose] > │         v1                                                                   │
00:00:17 #1956 [Verbose] > │ and method32 (v0 : (string []), v1 : UH2, v2 : int32) : int32 =              │
00:00:17 #1957 [Verbose] > │     match v1 with                                                            │
00:00:17 #1958 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:00:17 #1959 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:17 #1960 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:17 #1961 [Verbose] > │         method32(v0, v4, v5)                                                 │
00:00:17 #1962 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:17 #1963 [Verbose] > │         v2                                                                   │
00:00:17 #1964 [Verbose] > │ and method30 (v0 : UH2) : (string []) =                                      │
00:00:17 #1965 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:17 #1966 [Verbose] > │     let v2 : int32 = method31(v0, v1)                                        │
00:00:17 #1967 [Verbose] > │     let v3 : (string []) = Array.zeroCreate<string> (v2)                     │
00:00:17 #1968 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:17 #1969 [Verbose] > │     let v5 : int32 = method32(v3, v0, v4)                                    │
00:00:17 #1970 [Verbose] > │     v3                                                                       │
00:00:17 #1971 [Verbose] > │ and method34 (v0 : UH5, v1 : uint64) : uint64 =                              │
00:00:17 #1972 [Verbose] > │     match v0 with                                                            │
00:00:17 #1973 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:17 #1974 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:00:17 #1975 [Verbose] > │         method34(v4, v5)                                                     │
00:00:17 #1976 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:17 #1977 [Verbose] > │         v1                                                                   │
00:00:17 #1978 [Verbose] > │ and method35 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : uint64) :     │
00:00:17 #1979 [Verbose] > │ uint64 =                                                                     │
00:00:17 #1980 [Verbose] > │     match v1 with                                                            │
00:00:17 #1981 [Verbose] > │     | UH5_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:17 #1982 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:17 #1983 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:00:17 #1984 [Verbose] > │         method35(v0, v5, v6)                                                 │
00:00:17 #1985 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:17 #1986 [Verbose] > │         v2                                                                   │
00:00:17 #1987 [Verbose] > │ and method33 (v0 : UH5) : (struct (int32 * int64) []) =                      │
00:00:17 #1988 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:00:17 #1989 [Verbose] > │     let v2 : uint64 = method34(v0, v1)                                       │
00:00:17 #1990 [Verbose] > │     let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 *  │
00:00:17 #1991 [Verbose] > │ int64)> (System.Convert.ToInt32(v2))                                         │
00:00:17 #1992 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:00:17 #1993 [Verbose] > │     let v5 : uint64 = method35(v3, v0, v4)                                   │
00:00:17 #1994 [Verbose] > │     v3                                                                       │
00:00:17 #1995 [Verbose] > │ and closure5 () struct (v0 : int32, v1 : int64) : int64 =                    │
00:00:17 #1996 [Verbose] > │     v1                                                                       │
00:00:17 #1997 [Verbose] > │ and closure0 () () : unit =                                                  │
00:00:17 #1998 [Verbose] > │     let v0 : (unit -> unit) = closure0()                                     │
00:00:17 #1999 [Verbose] > │     let v1 : string = nameof v0                                              │
00:00:17 #2000 [Verbose] > │     let v2 : string = ""                                                     │
00:00:17 #2001 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:17 #2002 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:17 #2003 [Verbose] > │     let v3 : string = $"Test: {v1}"                                          │
00:00:17 #2004 [Verbose] > │     System.Console.WriteLine v3                                              │
00:00:17 #2005 [Verbose] > │     let v4 : float = 0.0                                                     │
00:00:17 #2006 [Verbose] > │     let v5 : float = 1.0                                                     │
00:00:17 #2007 [Verbose] > │     let v6 : float = 2.0                                                     │
00:00:17 #2008 [Verbose] > │     let v7 : float = 3.0                                                     │
00:00:17 #2009 [Verbose] > │     let v8 : float = 5.0                                                     │
00:00:17 #2010 [Verbose] > │     let v9 : float = 6.0                                                     │
00:00:17 #2011 [Verbose] > │     let v10 : UH0 = UH0_1                                                    │
00:00:17 #2012 [Verbose] > │     let v11 : UH0 = UH0_0(v8, v9, v10)                                       │
00:00:17 #2013 [Verbose] > │     let v12 : UH0 = UH0_0(v6, v7, v11)                                       │
00:00:17 #2014 [Verbose] > │     let v13 : UH0 = UH0_0(v4, v5, v12)                                       │
00:00:17 #2015 [Verbose] > │     let v14 : (struct (float * float) []) = method1(v13)                     │
00:00:17 #2016 [Verbose] > │     let v15 : uint64 = System.Convert.ToUInt64 v14.Length                    │
00:00:17 #2017 [Verbose] > │     let v16 : (struct (string * string * string * (int64 [])) []) =          │
00:00:17 #2018 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))>             │
00:00:17 #2019 [Verbose] > │ (System.Convert.ToInt32(v15))                                                │
00:00:17 #2020 [Verbose] > │     let v17 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:00:17 #2021 [Verbose] > │     while method4(v15, v17) do                                               │
00:00:17 #2022 [Verbose] > │         let v19 : uint64 = v17.l0                                            │
00:00:17 #2023 [Verbose] > │         let struct (v20 : float, v21 : float) = v14.[int v19]                │
00:00:17 #2024 [Verbose] > │         let v22 : string = $"%A{v20}"                                        │
00:00:17 #2025 [Verbose] > │         System.Console.WriteLine v2                                          │
00:00:17 #2026 [Verbose] > │         let v23 : string = $"Solution: {v22}  "                              │
00:00:17 #2027 [Verbose] > │         System.Console.WriteLine v23                                         │
00:00:17 #2028 [Verbose] > │         let v24 : int32 = 0                                                  │
00:00:17 #2029 [Verbose] > │         let v25 : string = "A"                                               │
00:00:17 #2030 [Verbose] > │         let v26 : (float -> float) = closure1()                              │
00:00:17 #2031 [Verbose] > │         let v27 : UH1 = UH1_1                                                │
00:00:17 #2032 [Verbose] > │         let v28 : UH1 = UH1_0(v24, v25, v26, v27)                            │
00:00:17 #2033 [Verbose] > │         let v29 : (struct (int32 * string * (float -> float)) []) =          │
00:00:17 #2034 [Verbose] > │ method5(v28)                                                                 │
00:00:17 #2035 [Verbose] > │         let v30 : uint64 = System.Convert.ToUInt64 v29.Length                │
00:00:17 #2036 [Verbose] > │         let v31 : (struct (float * int64) []) = Array.zeroCreate<struct      │
00:00:17 #2037 [Verbose] > │ (float * int64)> (System.Convert.ToInt32(v30))                               │
00:00:17 #2038 [Verbose] > │         let v32 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:17 #2039 [Verbose] > │         while method4(v30, v32) do                                           │
00:00:17 #2040 [Verbose] > │             let v34 : uint64 = v32.l0                                        │
00:00:17 #2041 [Verbose] > │             let struct (v35 : int32, v36 : string, v37 : (float -> float)) = │
00:00:17 #2042 [Verbose] > │ v29.[int v34]                                                                │
00:00:17 #2043 [Verbose] > │             let mutable result = None                                        │
00:00:17 #2044 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:17 #2045 [Verbose] > │             #if !WASM                                                        │
00:00:17 #2046 [Verbose] > │             ()                                                               │
00:00:17 #2047 [Verbose] > │             #else                                                            │
00:00:17 #2048 [Verbose] > │             ()                                                               │
00:00:17 #2049 [Verbose] > │             #endif                                                           │
00:00:17 #2050 [Verbose] > │             #else                                                            │
00:00:17 #2051 [Verbose] > │             System.GC.Collect ()                                             │
00:00:17 #2052 [Verbose] > │             ()                                                               │
00:00:17 #2053 [Verbose] > │             #endif                                                           │
00:00:17 #2054 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:17 #2055 [Verbose] > │             result |> Option.get                                             │
00:00:17 #2056 [Verbose] > │             let v38 : (unit -> System.Diagnostics.Stopwatch) =               │
00:00:17 #2057 [Verbose] > │ System.Diagnostics.Stopwatch                                                 │
00:00:17 #2058 [Verbose] > │             let v39 : System.Diagnostics.Stopwatch = v38 ()                  │
00:00:17 #2059 [Verbose] > │             v39.Start ()                                                     │
00:00:17 #2060 [Verbose] > │             let v40 : int64 = v39.ElapsedMilliseconds                        │
00:00:17 #2061 [Verbose] > │             let v41 : (int32 []) = Array.zeroCreate<int32> (2000001)         │
00:00:17 #2062 [Verbose] > │             let v42 : Mut1 = {l0 = 0} : Mut1                                 │
00:00:17 #2063 [Verbose] > │             while method8(v42) do                                            │
00:00:17 #2064 [Verbose] > │                 let v44 : int32 = v42.l0                                     │
00:00:17 #2065 [Verbose] > │                 v41.[int v44] <- v44                                         │
00:00:17 #2066 [Verbose] > │                 let v45 : int32 = v44 + 1                                    │
00:00:17 #2067 [Verbose] > │                 v42.l0 <- v45                                                │
00:00:17 #2068 [Verbose] > │                 ()                                                           │
00:00:17 #2069 [Verbose] > │             let v46 : (int32 -> float) = closure2(v20, v37)                  │
00:00:17 #2070 [Verbose] > │             let v47 : (float []) = v41 |> Array.Parallel.map v46             │
00:00:17 #2071 [Verbose] > │             let v48 : int32 = v47.Length                                     │
00:00:17 #2072 [Verbose] > │             let v49 : int32 = v48 - 1                                        │
00:00:17 #2073 [Verbose] > │             let v50 : float = v47.[int v49]                                  │
00:00:17 #2074 [Verbose] > │             let v51 : int64 = v39.ElapsedMilliseconds                        │
00:00:17 #2075 [Verbose] > │             let v52 : int64 = v51 - v40                                      │
00:00:17 #2076 [Verbose] > │             let v53 : string = $"Test case {v35 + 1}. {v36}. Time: {v52}  "  │
00:00:17 #2077 [Verbose] > │             System.Console.WriteLine v53                                     │
00:00:17 #2078 [Verbose] > │             v31.[int v34] <- struct (v50, v52)                               │
00:00:17 #2079 [Verbose] > │             let v54 : uint64 = v34 + 1UL                                     │
00:00:17 #2080 [Verbose] > │             v32.l0 <- v54                                                    │
00:00:17 #2081 [Verbose] > │             ()                                                               │
00:00:17 #2082 [Verbose] > │         let v55 : uint64 = System.Convert.ToUInt64 v31.Length                │
00:00:17 #2083 [Verbose] > │         let v56 : (float []) = Array.zeroCreate<float>                       │
00:00:17 #2084 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:17 #2085 [Verbose] > │         let v57 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:17 #2086 [Verbose] > │         while method4(v55, v57) do                                           │
00:00:17 #2087 [Verbose] > │             let v59 : uint64 = v57.l0                                        │
00:00:17 #2088 [Verbose] > │             let struct (v60 : float, v61 : int64) = v31.[int v59]            │
00:00:17 #2089 [Verbose] > │             v56.[int v59] <- v60                                             │
00:00:17 #2090 [Verbose] > │             let v62 : uint64 = v59 + 1UL                                     │
00:00:17 #2091 [Verbose] > │             v57.l0 <- v62                                                    │
00:00:17 #2092 [Verbose] > │             ()                                                               │
00:00:17 #2093 [Verbose] > │         let v63 : uint64 = System.Convert.ToUInt64 v56.Length                │
00:00:17 #2094 [Verbose] > │         let v64 : bool = v63 <= 1UL                                          │
00:00:17 #2095 [Verbose] > │         if v64 then                                                          │
00:00:17 #2096 [Verbose] > │             ()                                                               │
00:00:17 #2097 [Verbose] > │         else                                                                 │
00:00:17 #2098 [Verbose] > │             let v65 : float = v56.[int 0UL]                                  │
00:00:17 #2099 [Verbose] > │             let v66 : uint64 = 0UL                                           │
00:00:17 #2100 [Verbose] > │             let v67 : bool = method9(v65, v56, v66)                          │
00:00:17 #2101 [Verbose] > │             if v67 then                                                      │
00:00:17 #2102 [Verbose] > │                 ()                                                           │
00:00:17 #2103 [Verbose] > │             else                                                             │
00:00:17 #2104 [Verbose] > │                 let v68 : string = $"Challenge error: {v56}"                 │
00:00:17 #2105 [Verbose] > │                 failwith<unit> v68                                           │
00:00:17 #2106 [Verbose] > │         let v69 : string = $"%A{v21}"                                        │
00:00:17 #2107 [Verbose] > │         let v70 : (float []) = Array.zeroCreate<float>                       │
00:00:17 #2108 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:17 #2109 [Verbose] > │         let v71 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:17 #2110 [Verbose] > │         while method4(v55, v71) do                                           │
00:00:17 #2111 [Verbose] > │             let v73 : uint64 = v71.l0                                        │
00:00:17 #2112 [Verbose] > │             let struct (v74 : float, v75 : int64) = v31.[int v73]            │
00:00:17 #2113 [Verbose] > │             v70.[int v73] <- v74                                             │
00:00:17 #2114 [Verbose] > │             let v76 : uint64 = v73 + 1UL                                     │
00:00:17 #2115 [Verbose] > │             v71.l0 <- v76                                                    │
00:00:17 #2116 [Verbose] > │             ()                                                               │
00:00:17 #2117 [Verbose] > │         let v77 : float = v70.[int 0UL]                                      │
00:00:17 #2118 [Verbose] > │         let v78 : string = $"%A{v77}"                                        │
00:00:17 #2119 [Verbose] > │         let v79 : (int64 []) = Array.zeroCreate<int64>                       │
00:00:17 #2120 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:17 #2121 [Verbose] > │         let v80 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:17 #2122 [Verbose] > │         while method4(v55, v80) do                                           │
00:00:17 #2123 [Verbose] > │             let v82 : uint64 = v80.l0                                        │
00:00:17 #2124 [Verbose] > │             let struct (v83 : float, v84 : int64) = v31.[int v82]            │
00:00:17 #2125 [Verbose] > │             v79.[int v82] <- v84                                             │
00:00:17 #2126 [Verbose] > │             let v85 : uint64 = v82 + 1UL                                     │
00:00:17 #2127 [Verbose] > │             v80.l0 <- v85                                                    │
00:00:17 #2128 [Verbose] > │             ()                                                               │
00:00:17 #2129 [Verbose] > │         v16.[int v19] <- struct (v69, v22, v78, v79)                         │
00:00:17 #2130 [Verbose] > │         let v86 : uint64 = v19 + 1UL                                         │
00:00:17 #2131 [Verbose] > │         v17.l0 <- v86                                                        │
00:00:17 #2132 [Verbose] > │         ()                                                                   │
00:00:17 #2133 [Verbose] > │     let v87 : uint64 = System.Convert.ToUInt64 v16.Length                    │
00:00:17 #2134 [Verbose] > │     let v88 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:17 #2135 [Verbose] > │ (System.Convert.ToInt32(v87))                                                │
00:00:17 #2136 [Verbose] > │     let v89 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:00:17 #2137 [Verbose] > │     while method4(v87, v89) do                                               │
00:00:17 #2138 [Verbose] > │         let v91 : uint64 = v89.l0                                            │
00:00:17 #2139 [Verbose] > │         let struct (v92 : string, v93 : string, v94 : string, v95 : (int64 [ │
00:00:17 #2140 [Verbose] > │ ])) = v16.[int v91]                                                          │
00:00:17 #2141 [Verbose] > │         let v96 : uint64 = System.Convert.ToUInt64 v95.Length                │
00:00:17 #2142 [Verbose] > │         let v97 : UH3 = UH3_1                                                │
00:00:17 #2143 [Verbose] > │         let v98 : Mut2 = {l0 = 0UL; l1 = v97; l2 = 0L} : Mut2                │
00:00:17 #2144 [Verbose] > │         while method10(v96, v98) do                                          │
00:00:17 #2145 [Verbose] > │             let v100 : uint64 = v98.l0                                       │
00:00:17 #2146 [Verbose] > │             let struct (v101 : UH3, v102 : int64) = v98.l1, v98.l2           │
00:00:17 #2147 [Verbose] > │             let v103 : int64 = v95.[int v100]                                │
00:00:17 #2148 [Verbose] > │             let v104 : int64 = v102 + 1L                                     │
00:00:17 #2149 [Verbose] > │             let v105 : uint64 = v100 + 1UL                                   │
00:00:17 #2150 [Verbose] > │             let v106 : UH3 = UH3_0(v102, v103, v101)                         │
00:00:17 #2151 [Verbose] > │             v98.l0 <- v105                                                   │
00:00:17 #2152 [Verbose] > │             v98.l1 <- v106                                                   │
00:00:17 #2153 [Verbose] > │             v98.l2 <- v104                                                   │
00:00:17 #2154 [Verbose] > │             ()                                                               │
00:00:17 #2155 [Verbose] > │         let struct (v107 : UH3, v108 : int64) = v98.l1, v98.l2               │
00:00:17 #2156 [Verbose] > │         let v109 : UH3 = UH3_1                                               │
00:00:17 #2157 [Verbose] > │         let v110 : UH3 = method11(v107, v109)                                │
00:00:17 #2158 [Verbose] > │         let v111 : (struct (int64 * int64) []) = method12(v110)              │
00:00:17 #2159 [Verbose] > │         let v112 : int32 = v111.Length                                       │
00:00:17 #2160 [Verbose] > │         let v113 : (struct (int64 * int64) []) = Array.zeroCreate<struct     │
00:00:17 #2161 [Verbose] > │ (int64 * int64)> (v112)                                                      │
00:00:17 #2162 [Verbose] > │         let v114 : Mut1 = {l0 = 0} : Mut1                                    │
00:00:17 #2163 [Verbose] > │         while method15(v112, v114) do                                        │
00:00:17 #2164 [Verbose] > │             let v116 : int32 = v114.l0                                       │
00:00:17 #2165 [Verbose] > │             let struct (v117 : int64, v118 : int64) = v111.[int v116]        │
00:00:17 #2166 [Verbose] > │             let v119 : int64 = v117 + 1L                                     │
00:00:17 #2167 [Verbose] > │             v113.[int v116] <- struct (v119, v118)                           │
00:00:17 #2168 [Verbose] > │             let v120 : int32 = v116 + 1                                      │
00:00:17 #2169 [Verbose] > │             v114.l0 <- v120                                                  │
00:00:17 #2170 [Verbose] > │             ()                                                               │
00:00:17 #2171 [Verbose] > │         let v121 : (struct (int64 * int64) -> int64) = closure3()            │
00:00:17 #2172 [Verbose] > │         let v122 : (struct (int64 * int64) []) = v113 |> Array.sortBy v121   │
00:00:17 #2173 [Verbose] > │         let struct (v123 : int64, v124 : int64) = v122.[int 0]               │
00:00:17 #2174 [Verbose] > │         let v125 : string = $"%A{struct (v123, v124)}"                       │
00:00:17 #2175 [Verbose] > │         let v126 : bool = v92 = v94                                          │
00:00:17 #2176 [Verbose] > │         let v131 : US0 =                                                     │
00:00:17 #2177 [Verbose] > │             if v126 then                                                     │
00:00:17 #2178 [Verbose] > │                 let v127 : System.ConsoleColor =                             │
00:00:17 #2179 [Verbose] > │ System.ConsoleColor.DarkGreen                                                │
00:00:17 #2180 [Verbose] > │                 US0_1(v127)                                                  │
00:00:17 #2181 [Verbose] > │             else                                                             │
00:00:17 #2182 [Verbose] > │                 let v129 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:00:17 #2183 [Verbose] > │                 US0_1(v129)                                                  │
00:00:17 #2184 [Verbose] > │         let v132 : UH2 = UH2_1                                               │
00:00:17 #2185 [Verbose] > │         let v133 : UH2 = UH2_0(v125, v132)                                   │
00:00:17 #2186 [Verbose] > │         let v134 : UH2 = UH2_0(v94, v133)                                    │
00:00:17 #2187 [Verbose] > │         let v135 : UH2 = UH2_0(v92, v134)                                    │
00:00:17 #2188 [Verbose] > │         let v136 : UH2 = UH2_0(v93, v135)                                    │
00:00:17 #2189 [Verbose] > │         v88.[int v91] <- struct (v136, v131)                                 │
00:00:17 #2190 [Verbose] > │         let v137 : uint64 = v91 + 1UL                                        │
00:00:17 #2191 [Verbose] > │         v89.l0 <- v137                                                       │
00:00:17 #2192 [Verbose] > │         ()                                                                   │
00:00:17 #2193 [Verbose] > │     let v138 : string = "Input"                                              │
00:00:17 #2194 [Verbose] > │     let v139 : string = "Expected"                                           │
00:00:17 #2195 [Verbose] > │     let v140 : string = "Result"                                             │
00:00:17 #2196 [Verbose] > │     let v141 : string = "Best"                                               │
00:00:17 #2197 [Verbose] > │     let v142 : UH2 = UH2_1                                                   │
00:00:17 #2198 [Verbose] > │     let v143 : UH2 = UH2_0(v141, v142)                                       │
00:00:17 #2199 [Verbose] > │     let v144 : UH2 = UH2_0(v140, v143)                                       │
00:00:17 #2200 [Verbose] > │     let v145 : UH2 = UH2_0(v139, v144)                                       │
00:00:17 #2201 [Verbose] > │     let v146 : UH2 = UH2_0(v138, v145)                                       │
00:00:17 #2202 [Verbose] > │     let v147 : US0 = US0_0                                                   │
00:00:17 #2203 [Verbose] > │     let v148 : string = "---"                                                │
00:00:17 #2204 [Verbose] > │     let v149 : UH2 = UH2_1                                                   │
00:00:17 #2205 [Verbose] > │     let v150 : UH2 = UH2_0(v148, v149)                                       │
00:00:17 #2206 [Verbose] > │     let v151 : UH2 = UH2_0(v148, v150)                                       │
00:00:17 #2207 [Verbose] > │     let v152 : UH2 = UH2_0(v148, v151)                                       │
00:00:17 #2208 [Verbose] > │     let v153 : UH2 = UH2_0(v148, v152)                                       │
00:00:17 #2209 [Verbose] > │     let v154 : US0 = US0_0                                                   │
00:00:17 #2210 [Verbose] > │     let v155 : UH4 = UH4_1                                                   │
00:00:17 #2211 [Verbose] > │     let v156 : UH4 = UH4_0(v153, v154, v155)                                 │
00:00:17 #2212 [Verbose] > │     let v157 : UH4 = UH4_0(v146, v147, v156)                                 │
00:00:17 #2213 [Verbose] > │     let v158 : (struct (UH2 * US0) []) = method16(v157)                      │
00:00:17 #2214 [Verbose] > │     let v159 : uint64 = System.Convert.ToUInt64 v158.Length                  │
00:00:17 #2215 [Verbose] > │     let v160 : uint64 = System.Convert.ToUInt64 v88.Length                   │
00:00:17 #2216 [Verbose] > │     let v161 : uint64 = v159 + v160                                          │
00:00:17 #2217 [Verbose] > │     let v162 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 *      │
00:00:17 #2218 [Verbose] > │ US0)> (System.Convert.ToInt32(v161))                                         │
00:00:17 #2219 [Verbose] > │     let v163 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2220 [Verbose] > │     while method4(v161, v163) do                                             │
00:00:17 #2221 [Verbose] > │         let v165 : uint64 = v163.l0                                          │
00:00:17 #2222 [Verbose] > │         let v166 : bool = v165 < v159                                        │
00:00:17 #2223 [Verbose] > │         let struct (v172 : UH2, v173 : US0) =                                │
00:00:17 #2224 [Verbose] > │             if v166 then                                                     │
00:00:17 #2225 [Verbose] > │                 let struct (v167 : UH2, v168 : US0) = v158.[int v165]        │
00:00:17 #2226 [Verbose] > │                 struct (v167, v168)                                          │
00:00:17 #2227 [Verbose] > │             else                                                             │
00:00:17 #2228 [Verbose] > │                 let v169 : uint64 = v165 - v159                              │
00:00:17 #2229 [Verbose] > │                 let struct (v170 : UH2, v171 : US0) = v88.[int v169]         │
00:00:17 #2230 [Verbose] > │                 struct (v170, v171)                                          │
00:00:17 #2231 [Verbose] > │         v162.[int v165] <- struct (v172, v173)                               │
00:00:17 #2232 [Verbose] > │         let v174 : uint64 = v165 + 1UL                                       │
00:00:17 #2233 [Verbose] > │         v163.l0 <- v174                                                      │
00:00:17 #2234 [Verbose] > │         ()                                                                   │
00:00:17 #2235 [Verbose] > │     let v175 : uint64 = System.Convert.ToUInt64 v162.Length                  │
00:00:17 #2236 [Verbose] > │     let v176 : ((string []) []) = Array.zeroCreate<(string [])>              │
00:00:17 #2237 [Verbose] > │ (System.Convert.ToInt32(v175))                                               │
00:00:17 #2238 [Verbose] > │     let v177 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2239 [Verbose] > │     while method4(v175, v177) do                                             │
00:00:17 #2240 [Verbose] > │         let v179 : uint64 = v177.l0                                          │
00:00:17 #2241 [Verbose] > │         let struct (v180 : UH2, v181 : US0) = v162.[int v179]                │
00:00:17 #2242 [Verbose] > │         let v182 : (string []) = method19(v180)                              │
00:00:17 #2243 [Verbose] > │         v176.[int v179] <- v182                                              │
00:00:17 #2244 [Verbose] > │         let v183 : uint64 = v179 + 1UL                                       │
00:00:17 #2245 [Verbose] > │         v177.l0 <- v183                                                      │
00:00:17 #2246 [Verbose] > │         ()                                                                   │
00:00:17 #2247 [Verbose] > │     let v184 : ((string []) []) = v176 |> Array.transpose                    │
00:00:17 #2248 [Verbose] > │     let v185 : uint64 = System.Convert.ToUInt64 v184.Length                  │
00:00:17 #2249 [Verbose] > │     let v186 : (int64 []) = Array.zeroCreate<int64>                          │
00:00:17 #2250 [Verbose] > │ (System.Convert.ToInt32(v185))                                               │
00:00:17 #2251 [Verbose] > │     let v187 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2252 [Verbose] > │     while method4(v185, v187) do                                             │
00:00:17 #2253 [Verbose] > │         let v189 : uint64 = v187.l0                                          │
00:00:17 #2254 [Verbose] > │         let v190 : (string []) = v184.[int v189]                             │
00:00:17 #2255 [Verbose] > │         let v191 : uint64 = System.Convert.ToUInt64 v190.Length              │
00:00:17 #2256 [Verbose] > │         let v192 : (int64 []) = Array.zeroCreate<int64>                      │
00:00:17 #2257 [Verbose] > │ (System.Convert.ToInt32(v191))                                               │
00:00:17 #2258 [Verbose] > │         let v193 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:00:17 #2259 [Verbose] > │         while method4(v191, v193) do                                         │
00:00:17 #2260 [Verbose] > │             let v195 : uint64 = v193.l0                                      │
00:00:17 #2261 [Verbose] > │             let v196 : string = v190.[int v195]                              │
00:00:17 #2262 [Verbose] > │             let v197 : int64 = System.Convert.ToInt64 v196.Length            │
00:00:17 #2263 [Verbose] > │             v192.[int v195] <- v197                                          │
00:00:17 #2264 [Verbose] > │             let v198 : uint64 = v195 + 1UL                                   │
00:00:17 #2265 [Verbose] > │             v193.l0 <- v198                                                  │
00:00:17 #2266 [Verbose] > │             ()                                                               │
00:00:17 #2267 [Verbose] > │         let v199 : (int64 []) = v192 |> Array.sortDescending                 │
00:00:17 #2268 [Verbose] > │         let v200 : int64 option = v199 |> Array.tryItem 0                    │
00:00:17 #2269 [Verbose] > │         let v201 : (int64 -> US1) = closure4()                               │
00:00:17 #2270 [Verbose] > │         let v202 : US1 = US1_0                                               │
00:00:17 #2271 [Verbose] > │         let v203 : US1 = v200 |> Option.map v201 |> Option.defaultValue v202 │
00:00:17 #2272 [Verbose] > │         let v206 : int64 =                                                   │
00:00:17 #2273 [Verbose] > │             match v203 with                                                  │
00:00:17 #2274 [Verbose] > │             | US1_0 -> (* None *)                                            │
00:00:17 #2275 [Verbose] > │                 0L                                                           │
00:00:17 #2276 [Verbose] > │             | US1_1(v204) -> (* Some *)                                      │
00:00:17 #2277 [Verbose] > │                 v204                                                         │
00:00:17 #2278 [Verbose] > │         v186.[int v189] <- v206                                              │
00:00:17 #2279 [Verbose] > │         let v207 : uint64 = v189 + 1UL                                       │
00:00:17 #2280 [Verbose] > │         v187.l0 <- v207                                                      │
00:00:17 #2281 [Verbose] > │         ()                                                                   │
00:00:17 #2282 [Verbose] > │     let v208 : uint64 = System.Convert.ToUInt64 v186.Length                  │
00:00:17 #2283 [Verbose] > │     let v209 : UH5 = UH5_1                                                   │
00:00:17 #2284 [Verbose] > │     let v210 : Mut3 = {l0 = 0UL; l1 = v209; l2 = 0} : Mut3                   │
00:00:17 #2285 [Verbose] > │     while method22(v208, v210) do                                            │
00:00:17 #2286 [Verbose] > │         let v212 : uint64 = v210.l0                                          │
00:00:17 #2287 [Verbose] > │         let struct (v213 : UH5, v214 : int32) = v210.l1, v210.l2             │
00:00:17 #2288 [Verbose] > │         let v215 : int64 = v186.[int v212]                                   │
00:00:17 #2289 [Verbose] > │         let v216 : int32 = v214 + 1                                          │
00:00:17 #2290 [Verbose] > │         let v217 : uint64 = v212 + 1UL                                       │
00:00:17 #2291 [Verbose] > │         let v218 : UH5 = UH5_0(v214, v215, v213)                             │
00:00:17 #2292 [Verbose] > │         v210.l0 <- v217                                                      │
00:00:17 #2293 [Verbose] > │         v210.l1 <- v218                                                      │
00:00:17 #2294 [Verbose] > │         v210.l2 <- v216                                                      │
00:00:17 #2295 [Verbose] > │         ()                                                                   │
00:00:17 #2296 [Verbose] > │     let struct (v219 : UH5, v220 : int32) = v210.l1, v210.l2                 │
00:00:17 #2297 [Verbose] > │     let v221 : UH5 = UH5_1                                                   │
00:00:17 #2298 [Verbose] > │     let v222 : UH5 = method23(v219, v221)                                    │
00:00:17 #2299 [Verbose] > │     let v223 : (struct (int32 * int64) []) = method24(v222)                  │
00:00:17 #2300 [Verbose] > │     let v224 : Map<int32, int64> = v223 |> Array.map (fun (struct (a, b)) -> │
00:00:17 #2301 [Verbose] > │ a, b) |> Map.ofArray                                                         │
00:00:17 #2302 [Verbose] > │     let v225 : (struct ((string []) * US0) []) = Array.zeroCreate<struct     │
00:00:17 #2303 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v175))                          │
00:00:17 #2304 [Verbose] > │     let v226 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2305 [Verbose] > │     while method4(v175, v226) do                                             │
00:00:17 #2306 [Verbose] > │         let v228 : uint64 = v226.l0                                          │
00:00:17 #2307 [Verbose] > │         let struct (v229 : UH2, v230 : US0) = v162.[int v228]                │
00:00:17 #2308 [Verbose] > │         let v231 : UH6 = UH6_1                                               │
00:00:17 #2309 [Verbose] > │         let v232 : int32 = 0                                                 │
00:00:17 #2310 [Verbose] > │         let struct (v233 : UH6, v234 : int32) = method27(v229, v231, v232)   │
00:00:17 #2311 [Verbose] > │         let v235 : UH6 = UH6_1                                               │
00:00:17 #2312 [Verbose] > │         let v236 : UH6 = method28(v233, v235)                                │
00:00:17 #2313 [Verbose] > │         let v237 : UH2 = UH2_1                                               │
00:00:17 #2314 [Verbose] > │         let v238 : UH2 = method29(v224, v236, v237)                          │
00:00:17 #2315 [Verbose] > │         let v239 : (string []) = method30(v238)                              │
00:00:17 #2316 [Verbose] > │         v225.[int v228] <- struct (v239, v230)                               │
00:00:17 #2317 [Verbose] > │         let v240 : uint64 = v228 + 1UL                                       │
00:00:17 #2318 [Verbose] > │         v226.l0 <- v240                                                      │
00:00:17 #2319 [Verbose] > │         ()                                                                   │
00:00:17 #2320 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:17 #2321 [Verbose] > │     let v241 : uint64 = System.Convert.ToUInt64 v225.Length                  │
00:00:17 #2322 [Verbose] > │     let v242 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2323 [Verbose] > │     while method4(v241, v242) do                                             │
00:00:17 #2324 [Verbose] > │         let v244 : uint64 = v242.l0                                          │
00:00:17 #2325 [Verbose] > │         let struct (v245 : (string []), v246 : US0) = v225.[int v244]        │
00:00:17 #2326 [Verbose] > │         match v246 with                                                      │
00:00:17 #2327 [Verbose] > │         | US0_0 -> (* None *)                                                │
00:00:17 #2328 [Verbose] > │             let mutable result = None                                        │
00:00:17 #2329 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:17 #2330 [Verbose] > │             #if !WASM                                                        │
00:00:17 #2331 [Verbose] > │             ()                                                               │
00:00:17 #2332 [Verbose] > │             #else                                                            │
00:00:17 #2333 [Verbose] > │             ()                                                               │
00:00:17 #2334 [Verbose] > │             #endif                                                           │
00:00:17 #2335 [Verbose] > │             #else                                                            │
00:00:17 #2336 [Verbose] > │             System.Console.ResetColor ()                                     │
00:00:17 #2337 [Verbose] > │             ()                                                               │
00:00:17 #2338 [Verbose] > │             #endif                                                           │
00:00:17 #2339 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:17 #2340 [Verbose] > │             result |> Option.get                                             │
00:00:17 #2341 [Verbose] > │             ()                                                               │
00:00:17 #2342 [Verbose] > │         | US0_1(v247) -> (* Some *)                                          │
00:00:17 #2343 [Verbose] > │             let mutable result = None                                        │
00:00:17 #2344 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:17 #2345 [Verbose] > │             #if !WASM                                                        │
00:00:17 #2346 [Verbose] > │             ()                                                               │
00:00:17 #2347 [Verbose] > │             #else                                                            │
00:00:17 #2348 [Verbose] > │             ()                                                               │
00:00:17 #2349 [Verbose] > │             #endif                                                           │
00:00:17 #2350 [Verbose] > │             #else                                                            │
00:00:17 #2351 [Verbose] > │             System.Console.ForegroundColor <- v247                           │
00:00:17 #2352 [Verbose] > │             ()                                                               │
00:00:17 #2353 [Verbose] > │             #endif                                                           │
00:00:17 #2354 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:17 #2355 [Verbose] > │             result |> Option.get                                             │
00:00:17 #2356 [Verbose] > │             ()                                                               │
00:00:17 #2357 [Verbose] > │         let v248 : string = "\t| "                                           │
00:00:17 #2358 [Verbose] > │         let v249 : string = System.String.Join (v248, v245)                  │
00:00:17 #2359 [Verbose] > │         System.Console.WriteLine v249                                        │
00:00:17 #2360 [Verbose] > │         let mutable result = None                                            │
00:00:17 #2361 [Verbose] > │         #if FABLE_COMPILER_RUST                                              │
00:00:17 #2362 [Verbose] > │         #if !WASM                                                            │
00:00:17 #2363 [Verbose] > │         ()                                                                   │
00:00:17 #2364 [Verbose] > │         #else                                                                │
00:00:17 #2365 [Verbose] > │         ()                                                                   │
00:00:17 #2366 [Verbose] > │         #endif                                                               │
00:00:17 #2367 [Verbose] > │         #else                                                                │
00:00:17 #2368 [Verbose] > │         System.Console.ResetColor ()                                         │
00:00:17 #2369 [Verbose] > │         ()                                                                   │
00:00:17 #2370 [Verbose] > │         #endif                                                               │
00:00:17 #2371 [Verbose] > │         |> fun x -> result <- Some x                                         │
00:00:17 #2372 [Verbose] > │         result |> Option.get                                                 │
00:00:17 #2373 [Verbose] > │         let v250 : uint64 = v244 + 1UL                                       │
00:00:17 #2374 [Verbose] > │         v242.l0 <- v250                                                      │
00:00:17 #2375 [Verbose] > │         ()                                                                   │
00:00:17 #2376 [Verbose] > │     let v251 : ((float []) []) = Array.zeroCreate<(float [])>                │
00:00:17 #2377 [Verbose] > │ (System.Convert.ToInt32(v87))                                                │
00:00:17 #2378 [Verbose] > │     let v252 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2379 [Verbose] > │     while method4(v87, v252) do                                              │
00:00:17 #2380 [Verbose] > │         let v254 : uint64 = v252.l0                                          │
00:00:17 #2381 [Verbose] > │         let struct (v255 : string, v256 : string, v257 : string, v258 :      │
00:00:17 #2382 [Verbose] > │ (int64 [])) = v16.[int v254]                                                 │
00:00:17 #2383 [Verbose] > │         let v259 : (int64 -> float) = float                                  │
00:00:17 #2384 [Verbose] > │         let v260 : uint64 = System.Convert.ToUInt64 v258.Length              │
00:00:17 #2385 [Verbose] > │         let v261 : (float []) = Array.zeroCreate<float>                      │
00:00:17 #2386 [Verbose] > │ (System.Convert.ToInt32(v260))                                               │
00:00:17 #2387 [Verbose] > │         let v262 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:00:17 #2388 [Verbose] > │         while method4(v260, v262) do                                         │
00:00:17 #2389 [Verbose] > │             let v264 : uint64 = v262.l0                                      │
00:00:17 #2390 [Verbose] > │             let v265 : int64 = v258.[int v264]                               │
00:00:17 #2391 [Verbose] > │             let v266 : float = v259 v265                                     │
00:00:17 #2392 [Verbose] > │             v261.[int v264] <- v266                                          │
00:00:17 #2393 [Verbose] > │             let v267 : uint64 = v264 + 1UL                                   │
00:00:17 #2394 [Verbose] > │             v262.l0 <- v267                                                  │
00:00:17 #2395 [Verbose] > │             ()                                                               │
00:00:17 #2396 [Verbose] > │         v251.[int v254] <- v261                                              │
00:00:17 #2397 [Verbose] > │         let v268 : uint64 = v254 + 1UL                                       │
00:00:17 #2398 [Verbose] > │         v252.l0 <- v268                                                      │
00:00:17 #2399 [Verbose] > │         ()                                                                   │
00:00:17 #2400 [Verbose] > │     let v269 : ((float []) []) = v251 |> Array.transpose                     │
00:00:17 #2401 [Verbose] > │     let v270 : uint64 = System.Convert.ToUInt64 v269.Length                  │
00:00:17 #2402 [Verbose] > │     let v271 : (float []) = Array.zeroCreate<float>                          │
00:00:17 #2403 [Verbose] > │ (System.Convert.ToInt32(v270))                                               │
00:00:17 #2404 [Verbose] > │     let v272 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2405 [Verbose] > │     while method4(v270, v272) do                                             │
00:00:17 #2406 [Verbose] > │         let v274 : uint64 = v272.l0                                          │
00:00:17 #2407 [Verbose] > │         let v275 : (float []) = v269.[int v274]                              │
00:00:17 #2408 [Verbose] > │         let v276 : float = v275 |> Array.average                             │
00:00:17 #2409 [Verbose] > │         v271.[int v274] <- v276                                              │
00:00:17 #2410 [Verbose] > │         let v277 : uint64 = v274 + 1UL                                       │
00:00:17 #2411 [Verbose] > │         v272.l0 <- v277                                                      │
00:00:17 #2412 [Verbose] > │         ()                                                                   │
00:00:17 #2413 [Verbose] > │     let v278 : (float -> int64) = int64                                      │
00:00:17 #2414 [Verbose] > │     let v279 : uint64 = System.Convert.ToUInt64 v271.Length                  │
00:00:17 #2415 [Verbose] > │     let v280 : (int64 []) = Array.zeroCreate<int64>                          │
00:00:17 #2416 [Verbose] > │ (System.Convert.ToInt32(v279))                                               │
00:00:17 #2417 [Verbose] > │     let v281 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2418 [Verbose] > │     while method4(v279, v281) do                                             │
00:00:17 #2419 [Verbose] > │         let v283 : uint64 = v281.l0                                          │
00:00:17 #2420 [Verbose] > │         let v284 : float = v271.[int v283]                                   │
00:00:17 #2421 [Verbose] > │         let v285 : int64 = v278 v284                                         │
00:00:17 #2422 [Verbose] > │         v280.[int v283] <- v285                                              │
00:00:17 #2423 [Verbose] > │         let v286 : uint64 = v283 + 1UL                                       │
00:00:17 #2424 [Verbose] > │         v281.l0 <- v286                                                      │
00:00:17 #2425 [Verbose] > │         ()                                                                   │
00:00:17 #2426 [Verbose] > │     let v287 : uint64 = System.Convert.ToUInt64 v280.Length                  │
00:00:17 #2427 [Verbose] > │     let v288 : UH5 = UH5_1                                                   │
00:00:17 #2428 [Verbose] > │     let v289 : Mut3 = {l0 = 0UL; l1 = v288; l2 = 0} : Mut3                   │
00:00:17 #2429 [Verbose] > │     while method22(v287, v289) do                                            │
00:00:17 #2430 [Verbose] > │         let v291 : uint64 = v289.l0                                          │
00:00:17 #2431 [Verbose] > │         let struct (v292 : UH5, v293 : int32) = v289.l1, v289.l2             │
00:00:17 #2432 [Verbose] > │         let v294 : int64 = v280.[int v291]                                   │
00:00:17 #2433 [Verbose] > │         let v295 : int32 = v293 + 1                                          │
00:00:17 #2434 [Verbose] > │         let v296 : uint64 = v291 + 1UL                                       │
00:00:17 #2435 [Verbose] > │         let v297 : UH5 = UH5_0(v293, v294, v292)                             │
00:00:17 #2436 [Verbose] > │         v289.l0 <- v296                                                      │
00:00:17 #2437 [Verbose] > │         v289.l1 <- v297                                                      │
00:00:17 #2438 [Verbose] > │         v289.l2 <- v295                                                      │
00:00:17 #2439 [Verbose] > │         ()                                                                   │
00:00:17 #2440 [Verbose] > │     let struct (v298 : UH5, v299 : int32) = v289.l1, v289.l2                 │
00:00:17 #2441 [Verbose] > │     let v300 : UH5 = UH5_1                                                   │
00:00:17 #2442 [Verbose] > │     let v301 : UH5 = method23(v298, v300)                                    │
00:00:17 #2443 [Verbose] > │     let v302 : (struct (int32 * int64) []) = method33(v301)                  │
00:00:17 #2444 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:17 #2445 [Verbose] > │     let v303 : string = "Average Ranking  "                                  │
00:00:17 #2446 [Verbose] > │     System.Console.WriteLine v303                                            │
00:00:17 #2447 [Verbose] > │     let v304 : (struct (int32 * int64) -> int64) = closure5()                │
00:00:17 #2448 [Verbose] > │     let v305 : (struct (int32 * int64) []) = v302 |> Array.sortBy v304       │
00:00:17 #2449 [Verbose] > │     let v306 : uint64 = System.Convert.ToUInt64 v305.Length                  │
00:00:17 #2450 [Verbose] > │     let v307 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2451 [Verbose] > │     while method4(v306, v307) do                                             │
00:00:17 #2452 [Verbose] > │         let v309 : uint64 = v307.l0                                          │
00:00:17 #2453 [Verbose] > │         let struct (v310 : int32, v311 : int64) = v305.[int v309]            │
00:00:17 #2454 [Verbose] > │         let v312 : string = $"Test case %d{v310 + 1}. Average Time: %A{v311} │
00:00:17 #2455 [Verbose] > │ "                                                                            │
00:00:17 #2456 [Verbose] > │         System.Console.WriteLine v312                                        │
00:00:17 #2457 [Verbose] > │         let v313 : uint64 = v309 + 1UL                                       │
00:00:17 #2458 [Verbose] > │         v307.l0 <- v313                                                      │
00:00:17 #2459 [Verbose] > │         ()                                                                   │
00:00:17 #2460 [Verbose] > │     ()                                                                       │
00:00:17 #2461 [Verbose] > │ and method0 () : unit =                                                      │
00:00:17 #2462 [Verbose] > │     let v0 : (unit -> unit) = closure0()                                     │
00:00:17 #2463 [Verbose] > │     let v1 : string = nameof v0                                              │
00:00:17 #2464 [Verbose] > │     let v2 : string = ""                                                     │
00:00:17 #2465 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:17 #2466 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:17 #2467 [Verbose] > │     let v3 : string = $"Test: {v1}"                                          │
00:00:17 #2468 [Verbose] > │     System.Console.WriteLine v3                                              │
00:00:17 #2469 [Verbose] > │     let v4 : float = 0.0                                                     │
00:00:17 #2470 [Verbose] > │     let v5 : float = 1.0                                                     │
00:00:17 #2471 [Verbose] > │     let v6 : float = 2.0                                                     │
00:00:17 #2472 [Verbose] > │     let v7 : float = 3.0                                                     │
00:00:17 #2473 [Verbose] > │     let v8 : float = 5.0                                                     │
00:00:17 #2474 [Verbose] > │     let v9 : float = 6.0                                                     │
00:00:17 #2475 [Verbose] > │     let v10 : UH0 = UH0_1                                                    │
00:00:17 #2476 [Verbose] > │     let v11 : UH0 = UH0_0(v8, v9, v10)                                       │
00:00:17 #2477 [Verbose] > │     let v12 : UH0 = UH0_0(v6, v7, v11)                                       │
00:00:17 #2478 [Verbose] > │     let v13 : UH0 = UH0_0(v4, v5, v12)                                       │
00:00:17 #2479 [Verbose] > │     let v14 : (struct (float * float) []) = method1(v13)                     │
00:00:17 #2480 [Verbose] > │     let v15 : uint64 = System.Convert.ToUInt64 v14.Length                    │
00:00:17 #2481 [Verbose] > │     let v16 : (struct (string * string * string * (int64 [])) []) =          │
00:00:17 #2482 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))>             │
00:00:17 #2483 [Verbose] > │ (System.Convert.ToInt32(v15))                                                │
00:00:17 #2484 [Verbose] > │     let v17 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:00:17 #2485 [Verbose] > │     while method4(v15, v17) do                                               │
00:00:17 #2486 [Verbose] > │         let v19 : uint64 = v17.l0                                            │
00:00:17 #2487 [Verbose] > │         let struct (v20 : float, v21 : float) = v14.[int v19]                │
00:00:17 #2488 [Verbose] > │         let v22 : string = $"%A{v20}"                                        │
00:00:17 #2489 [Verbose] > │         System.Console.WriteLine v2                                          │
00:00:17 #2490 [Verbose] > │         let v23 : string = $"Solution: {v22}  "                              │
00:00:17 #2491 [Verbose] > │         System.Console.WriteLine v23                                         │
00:00:17 #2492 [Verbose] > │         let v24 : int32 = 0                                                  │
00:00:17 #2493 [Verbose] > │         let v25 : string = "A"                                               │
00:00:17 #2494 [Verbose] > │         let v26 : (float -> float) = closure1()                              │
00:00:17 #2495 [Verbose] > │         let v27 : UH1 = UH1_1                                                │
00:00:17 #2496 [Verbose] > │         let v28 : UH1 = UH1_0(v24, v25, v26, v27)                            │
00:00:17 #2497 [Verbose] > │         let v29 : (struct (int32 * string * (float -> float)) []) =          │
00:00:17 #2498 [Verbose] > │ method5(v28)                                                                 │
00:00:17 #2499 [Verbose] > │         let v30 : uint64 = System.Convert.ToUInt64 v29.Length                │
00:00:17 #2500 [Verbose] > │         let v31 : (struct (float * int64) []) = Array.zeroCreate<struct      │
00:00:17 #2501 [Verbose] > │ (float * int64)> (System.Convert.ToInt32(v30))                               │
00:00:17 #2502 [Verbose] > │         let v32 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:17 #2503 [Verbose] > │         while method4(v30, v32) do                                           │
00:00:17 #2504 [Verbose] > │             let v34 : uint64 = v32.l0                                        │
00:00:17 #2505 [Verbose] > │             let struct (v35 : int32, v36 : string, v37 : (float -> float)) = │
00:00:17 #2506 [Verbose] > │ v29.[int v34]                                                                │
00:00:17 #2507 [Verbose] > │             let mutable result = None                                        │
00:00:17 #2508 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:17 #2509 [Verbose] > │             #if !WASM                                                        │
00:00:17 #2510 [Verbose] > │             ()                                                               │
00:00:17 #2511 [Verbose] > │             #else                                                            │
00:00:17 #2512 [Verbose] > │             ()                                                               │
00:00:17 #2513 [Verbose] > │             #endif                                                           │
00:00:17 #2514 [Verbose] > │             #else                                                            │
00:00:17 #2515 [Verbose] > │             System.GC.Collect ()                                             │
00:00:17 #2516 [Verbose] > │             ()                                                               │
00:00:17 #2517 [Verbose] > │             #endif                                                           │
00:00:17 #2518 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:17 #2519 [Verbose] > │             result |> Option.get                                             │
00:00:17 #2520 [Verbose] > │             let v38 : (unit -> System.Diagnostics.Stopwatch) =               │
00:00:17 #2521 [Verbose] > │ System.Diagnostics.Stopwatch                                                 │
00:00:17 #2522 [Verbose] > │             let v39 : System.Diagnostics.Stopwatch = v38 ()                  │
00:00:17 #2523 [Verbose] > │             v39.Start ()                                                     │
00:00:17 #2524 [Verbose] > │             let v40 : int64 = v39.ElapsedMilliseconds                        │
00:00:17 #2525 [Verbose] > │             let v41 : (int32 []) = Array.zeroCreate<int32> (2000001)         │
00:00:17 #2526 [Verbose] > │             let v42 : Mut1 = {l0 = 0} : Mut1                                 │
00:00:17 #2527 [Verbose] > │             while method8(v42) do                                            │
00:00:17 #2528 [Verbose] > │                 let v44 : int32 = v42.l0                                     │
00:00:17 #2529 [Verbose] > │                 v41.[int v44] <- v44                                         │
00:00:17 #2530 [Verbose] > │                 let v45 : int32 = v44 + 1                                    │
00:00:17 #2531 [Verbose] > │                 v42.l0 <- v45                                                │
00:00:17 #2532 [Verbose] > │                 ()                                                           │
00:00:17 #2533 [Verbose] > │             let v46 : (int32 -> float) = closure2(v20, v37)                  │
00:00:17 #2534 [Verbose] > │             let v47 : (float []) = v41 |> Array.Parallel.map v46             │
00:00:17 #2535 [Verbose] > │             let v48 : int32 = v47.Length                                     │
00:00:17 #2536 [Verbose] > │             let v49 : int32 = v48 - 1                                        │
00:00:17 #2537 [Verbose] > │             let v50 : float = v47.[int v49]                                  │
00:00:17 #2538 [Verbose] > │             let v51 : int64 = v39.ElapsedMilliseconds                        │
00:00:17 #2539 [Verbose] > │             let v52 : int64 = v51 - v40                                      │
00:00:17 #2540 [Verbose] > │             let v53 : string = $"Test case {v35 + 1}. {v36}. Time: {v52}  "  │
00:00:17 #2541 [Verbose] > │             System.Console.WriteLine v53                                     │
00:00:17 #2542 [Verbose] > │             v31.[int v34] <- struct (v50, v52)                               │
00:00:17 #2543 [Verbose] > │             let v54 : uint64 = v34 + 1UL                                     │
00:00:17 #2544 [Verbose] > │             v32.l0 <- v54                                                    │
00:00:17 #2545 [Verbose] > │             ()                                                               │
00:00:17 #2546 [Verbose] > │         let v55 : uint64 = System.Convert.ToUInt64 v31.Length                │
00:00:17 #2547 [Verbose] > │         let v56 : (float []) = Array.zeroCreate<float>                       │
00:00:17 #2548 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:17 #2549 [Verbose] > │         let v57 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:17 #2550 [Verbose] > │         while method4(v55, v57) do                                           │
00:00:17 #2551 [Verbose] > │             let v59 : uint64 = v57.l0                                        │
00:00:17 #2552 [Verbose] > │             let struct (v60 : float, v61 : int64) = v31.[int v59]            │
00:00:17 #2553 [Verbose] > │             v56.[int v59] <- v60                                             │
00:00:17 #2554 [Verbose] > │             let v62 : uint64 = v59 + 1UL                                     │
00:00:17 #2555 [Verbose] > │             v57.l0 <- v62                                                    │
00:00:17 #2556 [Verbose] > │             ()                                                               │
00:00:17 #2557 [Verbose] > │         let v63 : uint64 = System.Convert.ToUInt64 v56.Length                │
00:00:17 #2558 [Verbose] > │         let v64 : bool = v63 <= 1UL                                          │
00:00:17 #2559 [Verbose] > │         if v64 then                                                          │
00:00:17 #2560 [Verbose] > │             ()                                                               │
00:00:17 #2561 [Verbose] > │         else                                                                 │
00:00:17 #2562 [Verbose] > │             let v65 : float = v56.[int 0UL]                                  │
00:00:17 #2563 [Verbose] > │             let v66 : uint64 = 0UL                                           │
00:00:17 #2564 [Verbose] > │             let v67 : bool = method9(v65, v56, v66)                          │
00:00:17 #2565 [Verbose] > │             if v67 then                                                      │
00:00:17 #2566 [Verbose] > │                 ()                                                           │
00:00:17 #2567 [Verbose] > │             else                                                             │
00:00:17 #2568 [Verbose] > │                 let v68 : string = $"Challenge error: {v56}"                 │
00:00:17 #2569 [Verbose] > │                 failwith<unit> v68                                           │
00:00:17 #2570 [Verbose] > │         let v69 : string = $"%A{v21}"                                        │
00:00:17 #2571 [Verbose] > │         let v70 : (float []) = Array.zeroCreate<float>                       │
00:00:17 #2572 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:17 #2573 [Verbose] > │         let v71 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:17 #2574 [Verbose] > │         while method4(v55, v71) do                                           │
00:00:17 #2575 [Verbose] > │             let v73 : uint64 = v71.l0                                        │
00:00:17 #2576 [Verbose] > │             let struct (v74 : float, v75 : int64) = v31.[int v73]            │
00:00:17 #2577 [Verbose] > │             v70.[int v73] <- v74                                             │
00:00:17 #2578 [Verbose] > │             let v76 : uint64 = v73 + 1UL                                     │
00:00:17 #2579 [Verbose] > │             v71.l0 <- v76                                                    │
00:00:17 #2580 [Verbose] > │             ()                                                               │
00:00:17 #2581 [Verbose] > │         let v77 : float = v70.[int 0UL]                                      │
00:00:17 #2582 [Verbose] > │         let v78 : string = $"%A{v77}"                                        │
00:00:17 #2583 [Verbose] > │         let v79 : (int64 []) = Array.zeroCreate<int64>                       │
00:00:17 #2584 [Verbose] > │ (System.Convert.ToInt32(v55))                                                │
00:00:17 #2585 [Verbose] > │         let v80 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:00:17 #2586 [Verbose] > │         while method4(v55, v80) do                                           │
00:00:17 #2587 [Verbose] > │             let v82 : uint64 = v80.l0                                        │
00:00:17 #2588 [Verbose] > │             let struct (v83 : float, v84 : int64) = v31.[int v82]            │
00:00:17 #2589 [Verbose] > │             v79.[int v82] <- v84                                             │
00:00:17 #2590 [Verbose] > │             let v85 : uint64 = v82 + 1UL                                     │
00:00:17 #2591 [Verbose] > │             v80.l0 <- v85                                                    │
00:00:17 #2592 [Verbose] > │             ()                                                               │
00:00:17 #2593 [Verbose] > │         v16.[int v19] <- struct (v69, v22, v78, v79)                         │
00:00:17 #2594 [Verbose] > │         let v86 : uint64 = v19 + 1UL                                         │
00:00:17 #2595 [Verbose] > │         v17.l0 <- v86                                                        │
00:00:17 #2596 [Verbose] > │         ()                                                                   │
00:00:17 #2597 [Verbose] > │     let v87 : uint64 = System.Convert.ToUInt64 v16.Length                    │
00:00:17 #2598 [Verbose] > │     let v88 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)> │
00:00:17 #2599 [Verbose] > │ (System.Convert.ToInt32(v87))                                                │
00:00:17 #2600 [Verbose] > │     let v89 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:00:17 #2601 [Verbose] > │     while method4(v87, v89) do                                               │
00:00:17 #2602 [Verbose] > │         let v91 : uint64 = v89.l0                                            │
00:00:17 #2603 [Verbose] > │         let struct (v92 : string, v93 : string, v94 : string, v95 : (int64 [ │
00:00:17 #2604 [Verbose] > │ ])) = v16.[int v91]                                                          │
00:00:17 #2605 [Verbose] > │         let v96 : uint64 = System.Convert.ToUInt64 v95.Length                │
00:00:17 #2606 [Verbose] > │         let v97 : UH3 = UH3_1                                                │
00:00:17 #2607 [Verbose] > │         let v98 : Mut2 = {l0 = 0UL; l1 = v97; l2 = 0L} : Mut2                │
00:00:17 #2608 [Verbose] > │         while method10(v96, v98) do                                          │
00:00:17 #2609 [Verbose] > │             let v100 : uint64 = v98.l0                                       │
00:00:17 #2610 [Verbose] > │             let struct (v101 : UH3, v102 : int64) = v98.l1, v98.l2           │
00:00:17 #2611 [Verbose] > │             let v103 : int64 = v95.[int v100]                                │
00:00:17 #2612 [Verbose] > │             let v104 : int64 = v102 + 1L                                     │
00:00:17 #2613 [Verbose] > │             let v105 : uint64 = v100 + 1UL                                   │
00:00:17 #2614 [Verbose] > │             let v106 : UH3 = UH3_0(v102, v103, v101)                         │
00:00:17 #2615 [Verbose] > │             v98.l0 <- v105                                                   │
00:00:17 #2616 [Verbose] > │             v98.l1 <- v106                                                   │
00:00:17 #2617 [Verbose] > │             v98.l2 <- v104                                                   │
00:00:17 #2618 [Verbose] > │             ()                                                               │
00:00:17 #2619 [Verbose] > │         let struct (v107 : UH3, v108 : int64) = v98.l1, v98.l2               │
00:00:17 #2620 [Verbose] > │         let v109 : UH3 = UH3_1                                               │
00:00:17 #2621 [Verbose] > │         let v110 : UH3 = method11(v107, v109)                                │
00:00:17 #2622 [Verbose] > │         let v111 : (struct (int64 * int64) []) = method12(v110)              │
00:00:17 #2623 [Verbose] > │         let v112 : int32 = v111.Length                                       │
00:00:17 #2624 [Verbose] > │         let v113 : (struct (int64 * int64) []) = Array.zeroCreate<struct     │
00:00:17 #2625 [Verbose] > │ (int64 * int64)> (v112)                                                      │
00:00:17 #2626 [Verbose] > │         let v114 : Mut1 = {l0 = 0} : Mut1                                    │
00:00:17 #2627 [Verbose] > │         while method15(v112, v114) do                                        │
00:00:17 #2628 [Verbose] > │             let v116 : int32 = v114.l0                                       │
00:00:17 #2629 [Verbose] > │             let struct (v117 : int64, v118 : int64) = v111.[int v116]        │
00:00:17 #2630 [Verbose] > │             let v119 : int64 = v117 + 1L                                     │
00:00:17 #2631 [Verbose] > │             v113.[int v116] <- struct (v119, v118)                           │
00:00:17 #2632 [Verbose] > │             let v120 : int32 = v116 + 1                                      │
00:00:17 #2633 [Verbose] > │             v114.l0 <- v120                                                  │
00:00:17 #2634 [Verbose] > │             ()                                                               │
00:00:17 #2635 [Verbose] > │         let v121 : (struct (int64 * int64) -> int64) = closure3()            │
00:00:17 #2636 [Verbose] > │         let v122 : (struct (int64 * int64) []) = v113 |> Array.sortBy v121   │
00:00:17 #2637 [Verbose] > │         let struct (v123 : int64, v124 : int64) = v122.[int 0]               │
00:00:17 #2638 [Verbose] > │         let v125 : string = $"%A{struct (v123, v124)}"                       │
00:00:17 #2639 [Verbose] > │         let v126 : bool = v92 = v94                                          │
00:00:17 #2640 [Verbose] > │         let v131 : US0 =                                                     │
00:00:17 #2641 [Verbose] > │             if v126 then                                                     │
00:00:17 #2642 [Verbose] > │                 let v127 : System.ConsoleColor =                             │
00:00:17 #2643 [Verbose] > │ System.ConsoleColor.DarkGreen                                                │
00:00:17 #2644 [Verbose] > │                 US0_1(v127)                                                  │
00:00:17 #2645 [Verbose] > │             else                                                             │
00:00:17 #2646 [Verbose] > │                 let v129 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:00:17 #2647 [Verbose] > │                 US0_1(v129)                                                  │
00:00:17 #2648 [Verbose] > │         let v132 : UH2 = UH2_1                                               │
00:00:17 #2649 [Verbose] > │         let v133 : UH2 = UH2_0(v125, v132)                                   │
00:00:17 #2650 [Verbose] > │         let v134 : UH2 = UH2_0(v94, v133)                                    │
00:00:17 #2651 [Verbose] > │         let v135 : UH2 = UH2_0(v92, v134)                                    │
00:00:17 #2652 [Verbose] > │         let v136 : UH2 = UH2_0(v93, v135)                                    │
00:00:17 #2653 [Verbose] > │         v88.[int v91] <- struct (v136, v131)                                 │
00:00:17 #2654 [Verbose] > │         let v137 : uint64 = v91 + 1UL                                        │
00:00:17 #2655 [Verbose] > │         v89.l0 <- v137                                                       │
00:00:17 #2656 [Verbose] > │         ()                                                                   │
00:00:17 #2657 [Verbose] > │     let v138 : string = "Input"                                              │
00:00:17 #2658 [Verbose] > │     let v139 : string = "Expected"                                           │
00:00:17 #2659 [Verbose] > │     let v140 : string = "Result"                                             │
00:00:17 #2660 [Verbose] > │     let v141 : string = "Best"                                               │
00:00:17 #2661 [Verbose] > │     let v142 : UH2 = UH2_1                                                   │
00:00:17 #2662 [Verbose] > │     let v143 : UH2 = UH2_0(v141, v142)                                       │
00:00:17 #2663 [Verbose] > │     let v144 : UH2 = UH2_0(v140, v143)                                       │
00:00:17 #2664 [Verbose] > │     let v145 : UH2 = UH2_0(v139, v144)                                       │
00:00:17 #2665 [Verbose] > │     let v146 : UH2 = UH2_0(v138, v145)                                       │
00:00:17 #2666 [Verbose] > │     let v147 : US0 = US0_0                                                   │
00:00:17 #2667 [Verbose] > │     let v148 : string = "---"                                                │
00:00:17 #2668 [Verbose] > │     let v149 : UH2 = UH2_1                                                   │
00:00:17 #2669 [Verbose] > │     let v150 : UH2 = UH2_0(v148, v149)                                       │
00:00:17 #2670 [Verbose] > │     let v151 : UH2 = UH2_0(v148, v150)                                       │
00:00:17 #2671 [Verbose] > │     let v152 : UH2 = UH2_0(v148, v151)                                       │
00:00:17 #2672 [Verbose] > │     let v153 : UH2 = UH2_0(v148, v152)                                       │
00:00:17 #2673 [Verbose] > │     let v154 : US0 = US0_0                                                   │
00:00:17 #2674 [Verbose] > │     let v155 : UH4 = UH4_1                                                   │
00:00:17 #2675 [Verbose] > │     let v156 : UH4 = UH4_0(v153, v154, v155)                                 │
00:00:17 #2676 [Verbose] > │     let v157 : UH4 = UH4_0(v146, v147, v156)                                 │
00:00:17 #2677 [Verbose] > │     let v158 : (struct (UH2 * US0) []) = method16(v157)                      │
00:00:17 #2678 [Verbose] > │     let v159 : uint64 = System.Convert.ToUInt64 v158.Length                  │
00:00:17 #2679 [Verbose] > │     let v160 : uint64 = System.Convert.ToUInt64 v88.Length                   │
00:00:17 #2680 [Verbose] > │     let v161 : uint64 = v159 + v160                                          │
00:00:17 #2681 [Verbose] > │     let v162 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 *      │
00:00:17 #2682 [Verbose] > │ US0)> (System.Convert.ToInt32(v161))                                         │
00:00:17 #2683 [Verbose] > │     let v163 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2684 [Verbose] > │     while method4(v161, v163) do                                             │
00:00:17 #2685 [Verbose] > │         let v165 : uint64 = v163.l0                                          │
00:00:17 #2686 [Verbose] > │         let v166 : bool = v165 < v159                                        │
00:00:17 #2687 [Verbose] > │         let struct (v172 : UH2, v173 : US0) =                                │
00:00:17 #2688 [Verbose] > │             if v166 then                                                     │
00:00:17 #2689 [Verbose] > │                 let struct (v167 : UH2, v168 : US0) = v158.[int v165]        │
00:00:17 #2690 [Verbose] > │                 struct (v167, v168)                                          │
00:00:17 #2691 [Verbose] > │             else                                                             │
00:00:17 #2692 [Verbose] > │                 let v169 : uint64 = v165 - v159                              │
00:00:17 #2693 [Verbose] > │                 let struct (v170 : UH2, v171 : US0) = v88.[int v169]         │
00:00:17 #2694 [Verbose] > │                 struct (v170, v171)                                          │
00:00:17 #2695 [Verbose] > │         v162.[int v165] <- struct (v172, v173)                               │
00:00:17 #2696 [Verbose] > │         let v174 : uint64 = v165 + 1UL                                       │
00:00:17 #2697 [Verbose] > │         v163.l0 <- v174                                                      │
00:00:17 #2698 [Verbose] > │         ()                                                                   │
00:00:17 #2699 [Verbose] > │     let v175 : uint64 = System.Convert.ToUInt64 v162.Length                  │
00:00:17 #2700 [Verbose] > │     let v176 : ((string []) []) = Array.zeroCreate<(string [])>              │
00:00:17 #2701 [Verbose] > │ (System.Convert.ToInt32(v175))                                               │
00:00:17 #2702 [Verbose] > │     let v177 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2703 [Verbose] > │     while method4(v175, v177) do                                             │
00:00:17 #2704 [Verbose] > │         let v179 : uint64 = v177.l0                                          │
00:00:17 #2705 [Verbose] > │         let struct (v180 : UH2, v181 : US0) = v162.[int v179]                │
00:00:17 #2706 [Verbose] > │         let v182 : (string []) = method19(v180)                              │
00:00:17 #2707 [Verbose] > │         v176.[int v179] <- v182                                              │
00:00:17 #2708 [Verbose] > │         let v183 : uint64 = v179 + 1UL                                       │
00:00:17 #2709 [Verbose] > │         v177.l0 <- v183                                                      │
00:00:17 #2710 [Verbose] > │         ()                                                                   │
00:00:17 #2711 [Verbose] > │     let v184 : ((string []) []) = v176 |> Array.transpose                    │
00:00:17 #2712 [Verbose] > │     let v185 : uint64 = System.Convert.ToUInt64 v184.Length                  │
00:00:17 #2713 [Verbose] > │     let v186 : (int64 []) = Array.zeroCreate<int64>                          │
00:00:17 #2714 [Verbose] > │ (System.Convert.ToInt32(v185))                                               │
00:00:17 #2715 [Verbose] > │     let v187 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2716 [Verbose] > │     while method4(v185, v187) do                                             │
00:00:17 #2717 [Verbose] > │         let v189 : uint64 = v187.l0                                          │
00:00:17 #2718 [Verbose] > │         let v190 : (string []) = v184.[int v189]                             │
00:00:17 #2719 [Verbose] > │         let v191 : uint64 = System.Convert.ToUInt64 v190.Length              │
00:00:17 #2720 [Verbose] > │         let v192 : (int64 []) = Array.zeroCreate<int64>                      │
00:00:17 #2721 [Verbose] > │ (System.Convert.ToInt32(v191))                                               │
00:00:17 #2722 [Verbose] > │         let v193 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:00:17 #2723 [Verbose] > │         while method4(v191, v193) do                                         │
00:00:17 #2724 [Verbose] > │             let v195 : uint64 = v193.l0                                      │
00:00:17 #2725 [Verbose] > │             let v196 : string = v190.[int v195]                              │
00:00:17 #2726 [Verbose] > │             let v197 : int64 = System.Convert.ToInt64 v196.Length            │
00:00:17 #2727 [Verbose] > │             v192.[int v195] <- v197                                          │
00:00:17 #2728 [Verbose] > │             let v198 : uint64 = v195 + 1UL                                   │
00:00:17 #2729 [Verbose] > │             v193.l0 <- v198                                                  │
00:00:17 #2730 [Verbose] > │             ()                                                               │
00:00:17 #2731 [Verbose] > │         let v199 : (int64 []) = v192 |> Array.sortDescending                 │
00:00:17 #2732 [Verbose] > │         let v200 : int64 option = v199 |> Array.tryItem 0                    │
00:00:17 #2733 [Verbose] > │         let v201 : (int64 -> US1) = closure4()                               │
00:00:17 #2734 [Verbose] > │         let v202 : US1 = US1_0                                               │
00:00:17 #2735 [Verbose] > │         let v203 : US1 = v200 |> Option.map v201 |> Option.defaultValue v202 │
00:00:17 #2736 [Verbose] > │         let v206 : int64 =                                                   │
00:00:17 #2737 [Verbose] > │             match v203 with                                                  │
00:00:17 #2738 [Verbose] > │             | US1_0 -> (* None *)                                            │
00:00:17 #2739 [Verbose] > │                 0L                                                           │
00:00:17 #2740 [Verbose] > │             | US1_1(v204) -> (* Some *)                                      │
00:00:17 #2741 [Verbose] > │                 v204                                                         │
00:00:17 #2742 [Verbose] > │         v186.[int v189] <- v206                                              │
00:00:17 #2743 [Verbose] > │         let v207 : uint64 = v189 + 1UL                                       │
00:00:17 #2744 [Verbose] > │         v187.l0 <- v207                                                      │
00:00:17 #2745 [Verbose] > │         ()                                                                   │
00:00:17 #2746 [Verbose] > │     let v208 : uint64 = System.Convert.ToUInt64 v186.Length                  │
00:00:17 #2747 [Verbose] > │     let v209 : UH5 = UH5_1                                                   │
00:00:17 #2748 [Verbose] > │     let v210 : Mut3 = {l0 = 0UL; l1 = v209; l2 = 0} : Mut3                   │
00:00:17 #2749 [Verbose] > │     while method22(v208, v210) do                                            │
00:00:17 #2750 [Verbose] > │         let v212 : uint64 = v210.l0                                          │
00:00:17 #2751 [Verbose] > │         let struct (v213 : UH5, v214 : int32) = v210.l1, v210.l2             │
00:00:17 #2752 [Verbose] > │         let v215 : int64 = v186.[int v212]                                   │
00:00:17 #2753 [Verbose] > │         let v216 : int32 = v214 + 1                                          │
00:00:17 #2754 [Verbose] > │         let v217 : uint64 = v212 + 1UL                                       │
00:00:17 #2755 [Verbose] > │         let v218 : UH5 = UH5_0(v214, v215, v213)                             │
00:00:17 #2756 [Verbose] > │         v210.l0 <- v217                                                      │
00:00:17 #2757 [Verbose] > │         v210.l1 <- v218                                                      │
00:00:17 #2758 [Verbose] > │         v210.l2 <- v216                                                      │
00:00:17 #2759 [Verbose] > │         ()                                                                   │
00:00:17 #2760 [Verbose] > │     let struct (v219 : UH5, v220 : int32) = v210.l1, v210.l2                 │
00:00:17 #2761 [Verbose] > │     let v221 : UH5 = UH5_1                                                   │
00:00:17 #2762 [Verbose] > │     let v222 : UH5 = method23(v219, v221)                                    │
00:00:17 #2763 [Verbose] > │     let v223 : (struct (int32 * int64) []) = method24(v222)                  │
00:00:17 #2764 [Verbose] > │     let v224 : Map<int32, int64> = v223 |> Array.map (fun (struct (a, b)) -> │
00:00:17 #2765 [Verbose] > │ a, b) |> Map.ofArray                                                         │
00:00:17 #2766 [Verbose] > │     let v225 : (struct ((string []) * US0) []) = Array.zeroCreate<struct     │
00:00:17 #2767 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v175))                          │
00:00:17 #2768 [Verbose] > │     let v226 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2769 [Verbose] > │     while method4(v175, v226) do                                             │
00:00:17 #2770 [Verbose] > │         let v228 : uint64 = v226.l0                                          │
00:00:17 #2771 [Verbose] > │         let struct (v229 : UH2, v230 : US0) = v162.[int v228]                │
00:00:17 #2772 [Verbose] > │         let v231 : UH6 = UH6_1                                               │
00:00:17 #2773 [Verbose] > │         let v232 : int32 = 0                                                 │
00:00:17 #2774 [Verbose] > │         let struct (v233 : UH6, v234 : int32) = method27(v229, v231, v232)   │
00:00:17 #2775 [Verbose] > │         let v235 : UH6 = UH6_1                                               │
00:00:17 #2776 [Verbose] > │         let v236 : UH6 = method28(v233, v235)                                │
00:00:17 #2777 [Verbose] > │         let v237 : UH2 = UH2_1                                               │
00:00:17 #2778 [Verbose] > │         let v238 : UH2 = method29(v224, v236, v237)                          │
00:00:17 #2779 [Verbose] > │         let v239 : (string []) = method30(v238)                              │
00:00:17 #2780 [Verbose] > │         v225.[int v228] <- struct (v239, v230)                               │
00:00:17 #2781 [Verbose] > │         let v240 : uint64 = v228 + 1UL                                       │
00:00:17 #2782 [Verbose] > │         v226.l0 <- v240                                                      │
00:00:17 #2783 [Verbose] > │         ()                                                                   │
00:00:17 #2784 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:17 #2785 [Verbose] > │     let v241 : uint64 = System.Convert.ToUInt64 v225.Length                  │
00:00:17 #2786 [Verbose] > │     let v242 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2787 [Verbose] > │     while method4(v241, v242) do                                             │
00:00:17 #2788 [Verbose] > │         let v244 : uint64 = v242.l0                                          │
00:00:17 #2789 [Verbose] > │         let struct (v245 : (string []), v246 : US0) = v225.[int v244]        │
00:00:17 #2790 [Verbose] > │         match v246 with                                                      │
00:00:17 #2791 [Verbose] > │         | US0_0 -> (* None *)                                                │
00:00:17 #2792 [Verbose] > │             let mutable result = None                                        │
00:00:17 #2793 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:17 #2794 [Verbose] > │             #if !WASM                                                        │
00:00:17 #2795 [Verbose] > │             ()                                                               │
00:00:17 #2796 [Verbose] > │             #else                                                            │
00:00:17 #2797 [Verbose] > │             ()                                                               │
00:00:17 #2798 [Verbose] > │             #endif                                                           │
00:00:17 #2799 [Verbose] > │             #else                                                            │
00:00:17 #2800 [Verbose] > │             System.Console.ResetColor ()                                     │
00:00:17 #2801 [Verbose] > │             ()                                                               │
00:00:17 #2802 [Verbose] > │             #endif                                                           │
00:00:17 #2803 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:17 #2804 [Verbose] > │             result |> Option.get                                             │
00:00:17 #2805 [Verbose] > │             ()                                                               │
00:00:17 #2806 [Verbose] > │         | US0_1(v247) -> (* Some *)                                          │
00:00:17 #2807 [Verbose] > │             let mutable result = None                                        │
00:00:17 #2808 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:00:17 #2809 [Verbose] > │             #if !WASM                                                        │
00:00:17 #2810 [Verbose] > │             ()                                                               │
00:00:17 #2811 [Verbose] > │             #else                                                            │
00:00:17 #2812 [Verbose] > │             ()                                                               │
00:00:17 #2813 [Verbose] > │             #endif                                                           │
00:00:17 #2814 [Verbose] > │             #else                                                            │
00:00:17 #2815 [Verbose] > │             System.Console.ForegroundColor <- v247                           │
00:00:17 #2816 [Verbose] > │             ()                                                               │
00:00:17 #2817 [Verbose] > │             #endif                                                           │
00:00:17 #2818 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:00:17 #2819 [Verbose] > │             result |> Option.get                                             │
00:00:17 #2820 [Verbose] > │             ()                                                               │
00:00:17 #2821 [Verbose] > │         let v248 : string = "\t| "                                           │
00:00:17 #2822 [Verbose] > │         let v249 : string = System.String.Join (v248, v245)                  │
00:00:17 #2823 [Verbose] > │         System.Console.WriteLine v249                                        │
00:00:17 #2824 [Verbose] > │         let mutable result = None                                            │
00:00:17 #2825 [Verbose] > │         #if FABLE_COMPILER_RUST                                              │
00:00:17 #2826 [Verbose] > │         #if !WASM                                                            │
00:00:17 #2827 [Verbose] > │         ()                                                                   │
00:00:17 #2828 [Verbose] > │         #else                                                                │
00:00:17 #2829 [Verbose] > │         ()                                                                   │
00:00:17 #2830 [Verbose] > │         #endif                                                               │
00:00:17 #2831 [Verbose] > │         #else                                                                │
00:00:17 #2832 [Verbose] > │         System.Console.ResetColor ()                                         │
00:00:17 #2833 [Verbose] > │         ()                                                                   │
00:00:17 #2834 [Verbose] > │         #endif                                                               │
00:00:17 #2835 [Verbose] > │         |> fun x -> result <- Some x                                         │
00:00:17 #2836 [Verbose] > │         result |> Option.get                                                 │
00:00:17 #2837 [Verbose] > │         let v250 : uint64 = v244 + 1UL                                       │
00:00:17 #2838 [Verbose] > │         v242.l0 <- v250                                                      │
00:00:17 #2839 [Verbose] > │         ()                                                                   │
00:00:17 #2840 [Verbose] > │     let v251 : ((float []) []) = Array.zeroCreate<(float [])>                │
00:00:17 #2841 [Verbose] > │ (System.Convert.ToInt32(v87))                                                │
00:00:17 #2842 [Verbose] > │     let v252 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2843 [Verbose] > │     while method4(v87, v252) do                                              │
00:00:17 #2844 [Verbose] > │         let v254 : uint64 = v252.l0                                          │
00:00:17 #2845 [Verbose] > │         let struct (v255 : string, v256 : string, v257 : string, v258 :      │
00:00:17 #2846 [Verbose] > │ (int64 [])) = v16.[int v254]                                                 │
00:00:17 #2847 [Verbose] > │         let v259 : (int64 -> float) = float                                  │
00:00:17 #2848 [Verbose] > │         let v260 : uint64 = System.Convert.ToUInt64 v258.Length              │
00:00:17 #2849 [Verbose] > │         let v261 : (float []) = Array.zeroCreate<float>                      │
00:00:17 #2850 [Verbose] > │ (System.Convert.ToInt32(v260))                                               │
00:00:17 #2851 [Verbose] > │         let v262 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:00:17 #2852 [Verbose] > │         while method4(v260, v262) do                                         │
00:00:17 #2853 [Verbose] > │             let v264 : uint64 = v262.l0                                      │
00:00:17 #2854 [Verbose] > │             let v265 : int64 = v258.[int v264]                               │
00:00:17 #2855 [Verbose] > │             let v266 : float = v259 v265                                     │
00:00:17 #2856 [Verbose] > │             v261.[int v264] <- v266                                          │
00:00:17 #2857 [Verbose] > │             let v267 : uint64 = v264 + 1UL                                   │
00:00:17 #2858 [Verbose] > │             v262.l0 <- v267                                                  │
00:00:17 #2859 [Verbose] > │             ()                                                               │
00:00:17 #2860 [Verbose] > │         v251.[int v254] <- v261                                              │
00:00:17 #2861 [Verbose] > │         let v268 : uint64 = v254 + 1UL                                       │
00:00:17 #2862 [Verbose] > │         v252.l0 <- v268                                                      │
00:00:17 #2863 [Verbose] > │         ()                                                                   │
00:00:17 #2864 [Verbose] > │     let v269 : ((float []) []) = v251 |> Array.transpose                     │
00:00:17 #2865 [Verbose] > │     let v270 : uint64 = System.Convert.ToUInt64 v269.Length                  │
00:00:17 #2866 [Verbose] > │     let v271 : (float []) = Array.zeroCreate<float>                          │
00:00:17 #2867 [Verbose] > │ (System.Convert.ToInt32(v270))                                               │
00:00:17 #2868 [Verbose] > │     let v272 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2869 [Verbose] > │     while method4(v270, v272) do                                             │
00:00:17 #2870 [Verbose] > │         let v274 : uint64 = v272.l0                                          │
00:00:17 #2871 [Verbose] > │         let v275 : (float []) = v269.[int v274]                              │
00:00:17 #2872 [Verbose] > │         let v276 : float = v275 |> Array.average                             │
00:00:17 #2873 [Verbose] > │         v271.[int v274] <- v276                                              │
00:00:17 #2874 [Verbose] > │         let v277 : uint64 = v274 + 1UL                                       │
00:00:17 #2875 [Verbose] > │         v272.l0 <- v277                                                      │
00:00:17 #2876 [Verbose] > │         ()                                                                   │
00:00:17 #2877 [Verbose] > │     let v278 : (float -> int64) = int64                                      │
00:00:17 #2878 [Verbose] > │     let v279 : uint64 = System.Convert.ToUInt64 v271.Length                  │
00:00:17 #2879 [Verbose] > │     let v280 : (int64 []) = Array.zeroCreate<int64>                          │
00:00:17 #2880 [Verbose] > │ (System.Convert.ToInt32(v279))                                               │
00:00:17 #2881 [Verbose] > │     let v281 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2882 [Verbose] > │     while method4(v279, v281) do                                             │
00:00:17 #2883 [Verbose] > │         let v283 : uint64 = v281.l0                                          │
00:00:17 #2884 [Verbose] > │         let v284 : float = v271.[int v283]                                   │
00:00:17 #2885 [Verbose] > │         let v285 : int64 = v278 v284                                         │
00:00:17 #2886 [Verbose] > │         v280.[int v283] <- v285                                              │
00:00:17 #2887 [Verbose] > │         let v286 : uint64 = v283 + 1UL                                       │
00:00:17 #2888 [Verbose] > │         v281.l0 <- v286                                                      │
00:00:17 #2889 [Verbose] > │         ()                                                                   │
00:00:17 #2890 [Verbose] > │     let v287 : uint64 = System.Convert.ToUInt64 v280.Length                  │
00:00:17 #2891 [Verbose] > │     let v288 : UH5 = UH5_1                                                   │
00:00:17 #2892 [Verbose] > │     let v289 : Mut3 = {l0 = 0UL; l1 = v288; l2 = 0} : Mut3                   │
00:00:17 #2893 [Verbose] > │     while method22(v287, v289) do                                            │
00:00:17 #2894 [Verbose] > │         let v291 : uint64 = v289.l0                                          │
00:00:17 #2895 [Verbose] > │         let struct (v292 : UH5, v293 : int32) = v289.l1, v289.l2             │
00:00:17 #2896 [Verbose] > │         let v294 : int64 = v280.[int v291]                                   │
00:00:17 #2897 [Verbose] > │         let v295 : int32 = v293 + 1                                          │
00:00:17 #2898 [Verbose] > │         let v296 : uint64 = v291 + 1UL                                       │
00:00:17 #2899 [Verbose] > │         let v297 : UH5 = UH5_0(v293, v294, v292)                             │
00:00:17 #2900 [Verbose] > │         v289.l0 <- v296                                                      │
00:00:17 #2901 [Verbose] > │         v289.l1 <- v297                                                      │
00:00:17 #2902 [Verbose] > │         v289.l2 <- v295                                                      │
00:00:17 #2903 [Verbose] > │         ()                                                                   │
00:00:17 #2904 [Verbose] > │     let struct (v298 : UH5, v299 : int32) = v289.l1, v289.l2                 │
00:00:17 #2905 [Verbose] > │     let v300 : UH5 = UH5_1                                                   │
00:00:17 #2906 [Verbose] > │     let v301 : UH5 = method23(v298, v300)                                    │
00:00:17 #2907 [Verbose] > │     let v302 : (struct (int32 * int64) []) = method33(v301)                  │
00:00:17 #2908 [Verbose] > │     System.Console.WriteLine v2                                              │
00:00:17 #2909 [Verbose] > │     let v303 : string = "Average Ranking  "                                  │
00:00:17 #2910 [Verbose] > │     System.Console.WriteLine v303                                            │
00:00:17 #2911 [Verbose] > │     let v304 : (struct (int32 * int64) -> int64) = closure5()                │
00:00:17 #2912 [Verbose] > │     let v305 : (struct (int32 * int64) []) = v302 |> Array.sortBy v304       │
00:00:17 #2913 [Verbose] > │     let v306 : uint64 = System.Convert.ToUInt64 v305.Length                  │
00:00:17 #2914 [Verbose] > │     let v307 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:00:17 #2915 [Verbose] > │     while method4(v306, v307) do                                             │
00:00:17 #2916 [Verbose] > │         let v309 : uint64 = v307.l0                                          │
00:00:17 #2917 [Verbose] > │         let struct (v310 : int32, v311 : int64) = v305.[int v309]            │
00:00:17 #2918 [Verbose] > │         let v312 : string = $"Test case %d{v310 + 1}. Average Time: %A{v311} │
00:00:17 #2919 [Verbose] > │ "                                                                            │
00:00:17 #2920 [Verbose] > │         System.Console.WriteLine v312                                        │
00:00:17 #2921 [Verbose] > │         let v313 : uint64 = v309 + 1UL                                       │
00:00:17 #2922 [Verbose] > │         v307.l0 <- v313                                                      │
00:00:17 #2923 [Verbose] > │         ()                                                                   │
00:00:17 #2924 [Verbose] > │     ()                                                                       │
00:00:17 #2925 [Verbose] > │ method0()                                                                    │
00:00:17 #2926 [Verbose] > │                                                                              │
00:00:17 #2927 [Verbose] > │                                                                              │
00:00:17 #2928 [Verbose] > │                                                                              │
00:00:17 #2929 [Verbose] > │ Test: v0                                                                     │
00:00:17 #2930 [Verbose] > │                                                                              │
00:00:17 #2931 [Verbose] > │ Solution: 0.0                                                                │
00:00:17 #2932 [Verbose] > │ Test case 1. A. Time: 22                                                     │
00:00:17 #2933 [Verbose] > │                                                                              │
00:00:17 #2934 [Verbose] > │ Solution: 2.0                                                                │
00:00:17 #2935 [Verbose] > │ Test case 1. A. Time: 9                                                      │
00:00:17 #2936 [Verbose] > │                                                                              │
00:00:17 #2937 [Verbose] > │ Solution: 5.0                                                                │
00:00:17 #2938 [Verbose] > │ Test case 1. A. Time: 11                                                     │
00:00:17 #2939 [Verbose] > │                                                                              │
00:00:17 #2940 [Verbose] > │ Input	| Expected	| Result	| Best                                                   │
00:00:17 #2941 [Verbose] > │ ---  	| ---     	| ---   	| ---                                                    │
00:00:17 #2942 [Verbose] > │ 0.0  	| 1.0     	| 1.0   	| struct (1L, 22L)                                       │
00:00:17 #2943 [Verbose] > │ 2.0  	| 3.0     	| 3.0   	| struct (1L, 9L)                                        │
00:00:17 #2944 [Verbose] > │ 5.0  	| 6.0     	| 6.0   	| struct (1L, 11L)                                       │
00:00:17 #2945 [Verbose] > │                                                                              │
00:00:17 #2946 [Verbose] > │ Average Ranking                                                              │
00:00:17 #2947 [Verbose] > │ Test case 1. Average Time: 14L                                               │
00:00:17 #2948 [Verbose] > │                                                                              │
00:00:17 #2949 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2950 [Verbose] > [NbConvertApp] Converting notebook benchmark.dib.ipynb to html
00:00:17 #2951 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:17 #2952 [Verbose] >   validate(nb)
00:00:18 #2953 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:18 #2954 [Verbose] >   return _pygments_highlight(
00:00:18 #2955 [Verbose] > [NbConvertApp] Writing 406166 bytes to benchmark.dib.html
00:00:18 #2956 [Debug] executeAsync / exitCode: 0 / output.Length: 289462
00:00:18 #2957 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 stream.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ # stream                                                                     │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > // // test
00:00:02 #27 [Verbose] >
00:00:02 #28 [Verbose] > open testing
00:00:04 #29 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1081-8117-8c446f92ffd2/main.spi
00:00:05 #30 [Verbose] >
00:00:05 #31 [Verbose] > ╭─[ 3.44s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #32 [Verbose] > │ ()                                                                           │
00:00:05 #33 [Verbose] > │                                                                              │
00:00:05 #34 [Verbose] > │                                                                              │
00:00:05 #35 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #36 [Verbose] >
00:00:05 #37 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #38 [Verbose] > union rec stream t =
00:00:05 #39 [Verbose] >     | StreamCons : t * (() -> stream t)
00:00:05 #40 [Verbose] >     | StreamNil
00:00:05 #41 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1303-0318-016d0266d925/main.spi
00:00:05 #42 [Verbose] >
00:00:05 #43 [Verbose] > ╭─[ 147.40ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #44 [Verbose] > │ ()                                                                           │
00:00:05 #45 [Verbose] > │                                                                              │
00:00:05 #46 [Verbose] > │                                                                              │
00:00:05 #47 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #48 [Verbose] >
00:00:05 #49 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #50 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #51 [Verbose] > │ ## fold                                                                      │
00:00:05 #52 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #53 [Verbose] >
00:00:05 #54 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #55 [Verbose] > inl fold fn init s =
00:00:05 #56 [Verbose] >     inl rec body acc = function
00:00:05 #57 [Verbose] >         | StreamCons (st, fn') => loop (fn acc st) (fn' ())
00:00:05 #58 [Verbose] >         | StreamNil => acc
00:00:05 #59 [Verbose] >     and inl loop acc = join_body body acc
00:00:05 #60 [Verbose] >     loop init s
00:00:06 #61 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1318-1810-1b4bfe4a545d/main.spi
00:00:06 #62 [Verbose] >
00:00:06 #63 [Verbose] > ╭─[ 143.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #64 [Verbose] > │ ()                                                                           │
00:00:06 #65 [Verbose] > │                                                                              │
00:00:06 #66 [Verbose] > │                                                                              │
00:00:06 #67 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #68 [Verbose] >
00:00:06 #69 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #70 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #71 [Verbose] > │ ## fold_back                                                                 │
00:00:06 #72 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #73 [Verbose] >
00:00:06 #74 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #75 [Verbose] > inl fold_back fn s init =
00:00:06 #76 [Verbose] >     inl rec body acc = function
00:00:06 #77 [Verbose] >         | StreamCons (st, fn') => fn st (loop acc (fn' ()))
00:00:06 #78 [Verbose] >         | StreamNil => acc
00:00:06 #79 [Verbose] >     and inl loop acc = join_body body acc
00:00:06 #80 [Verbose] >     loop init s
00:00:06 #81 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1332-3234-39ee2224428f/main.spi
00:00:06 #82 [Verbose] >
00:00:06 #83 [Verbose] > ╭─[ 148.93ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #84 [Verbose] > │ ()                                                                           │
00:00:06 #85 [Verbose] > │                                                                              │
00:00:06 #86 [Verbose] > │                                                                              │
00:00:06 #87 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #88 [Verbose] >
00:00:06 #89 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #90 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #91 [Verbose] > │ ## to_list                                                                   │
00:00:06 #92 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #93 [Verbose] >
00:00:06 #94 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #95 [Verbose] > inl to_list s =
00:00:06 #96 [Verbose] >     (s, [[]])
00:00:06 #97 [Verbose] >     ||> fold_back fun x acc =>
00:00:06 #98 [Verbose] >         x :: acc
00:00:06 #99 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1347-4734-4167c52d8500/main.spi
00:00:06 #100 [Verbose] >
00:00:06 #101 [Verbose] > ╭─[ 143.29ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #102 [Verbose] > │ ()                                                                           │
00:00:06 #103 [Verbose] > │                                                                              │
00:00:06 #104 [Verbose] > │                                                                              │
00:00:06 #105 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #106 [Verbose] >
00:00:06 #107 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #108 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #109 [Verbose] > │ ## rev                                                                       │
00:00:06 #110 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #111 [Verbose] >
00:00:06 #112 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #113 [Verbose] > inl rev s =
00:00:06 #114 [Verbose] >     (StreamNil, s)
00:00:06 #115 [Verbose] >     ||> fold fun s x =>
00:00:06 #116 [Verbose] >         StreamCons (x, fun () => s)
00:00:06 #117 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1361-6183-62be13109c5b/main.spi
00:00:06 #118 [Verbose] >
00:00:06 #119 [Verbose] > ╭─[ 138.12ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #120 [Verbose] > │ ()                                                                           │
00:00:06 #121 [Verbose] > │                                                                              │
00:00:06 #122 [Verbose] > │                                                                              │
00:00:06 #123 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #124 [Verbose] >
00:00:06 #125 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #126 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #127 [Verbose] > │ ## from_list                                                                 │
00:00:06 #128 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #129 [Verbose] >
00:00:06 #130 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #131 [Verbose] > inl from_list list =
00:00:06 #132 [Verbose] >     (list, StreamNil)
00:00:06 #133 [Verbose] >     ||> listm.foldBack fun x acc =>
00:00:06 #134 [Verbose] >         StreamCons (x, fun () => acc)
00:00:06 #135 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1375-7575-7135042985c2/main.spi
00:00:06 #136 [Verbose] >
00:00:06 #137 [Verbose] > ╭─[ 170.66ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #138 [Verbose] > │ ()                                                                           │
00:00:06 #139 [Verbose] > │                                                                              │
00:00:06 #140 [Verbose] > │                                                                              │
00:00:06 #141 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #142 [Verbose] >
00:00:06 #143 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #144 [Verbose] > // // test
00:00:06 #145 [Verbose] >
00:00:06 #146 [Verbose] > listm.init 3i32 id
00:00:06 #147 [Verbose] > |> from_list
00:00:06 #148 [Verbose] > |> rev
00:00:06 #149 [Verbose] > |> to_list
00:00:06 #150 [Verbose] > |> _equal [[ 2; 1; 0 ]]
00:00:06 #151 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1392-9294-929a5fee7cde/main.spi
00:00:07 #152 [Verbose] >
00:00:07 #153 [Verbose] > ╭─[ 848.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #154 [Verbose] > │ type UH0 =                                                                   │
00:00:07 #155 [Verbose] > │     | UH0_0 of int32 * UH0                                                   │
00:00:07 #156 [Verbose] > │     | UH0_1                                                                  │
00:00:07 #157 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #158 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:07 #159 [Verbose] > │     let v1 : UH0 = UH0_0(0, v0)                                              │
00:00:07 #160 [Verbose] > │     let v2 : UH0 = UH0_0(1, v1)                                              │
00:00:07 #161 [Verbose] > │     let v3 : UH0 = UH0_0(2, v2)                                              │
00:00:07 #162 [Verbose] > │     let v4 : UH0 = UH0_1                                                     │
00:00:07 #163 [Verbose] > │     let v5 : UH0 = UH0_0(0, v4)                                              │
00:00:07 #164 [Verbose] > │     let v6 : UH0 = UH0_0(1, v5)                                              │
00:00:07 #165 [Verbose] > │     let v7 : UH0 = UH0_0(2, v6)                                              │
00:00:07 #166 [Verbose] > │     let v8 : string = $"__expect / actual: %A{v3} / expected: %A{v7}"        │
00:00:07 #167 [Verbose] > │     ()                                                                       │
00:00:07 #168 [Verbose] > │ method0()                                                                    │
00:00:07 #169 [Verbose] > │                                                                              │
00:00:07 #170 [Verbose] > │                                                                              │
00:00:07 #171 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #172 [Verbose] >
00:00:07 #173 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #174 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #175 [Verbose] > │ ## try_item                                                                  │
00:00:07 #176 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #177 [Verbose] >
00:00:07 #178 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #179 [Verbose] > inl try_item i s =
00:00:07 #180 [Verbose] >     inl rec body i = function
00:00:07 #181 [Verbose] >         | StreamCons (x, _) when i <= 0 => Some x
00:00:07 #182 [Verbose] >         | StreamCons (_, fn) => loop (i - 1) (fn ())
00:00:07 #183 [Verbose] >         | StreamNil => None
00:00:07 #184 [Verbose] >     and inl loop acc s' =
00:00:07 #185 [Verbose] >         match var_is acc, var_is s' with
00:00:07 #186 [Verbose] >         | false, false => body acc s'
00:00:07 #187 [Verbose] >         | _ =>
00:00:07 #188 [Verbose] >             inl acc = dyn acc
00:00:07 #189 [Verbose] >             inl s' = dyn s'
00:00:07 #190 [Verbose] >             join body acc s'
00:00:07 #191 [Verbose] >     loop i s
00:00:07 #192 [Verbose] >
00:00:07 #193 [Verbose] > inl item i =
00:00:07 #194 [Verbose] >     try_item i >> optionm.value
00:00:07 #195 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1477-7785-7e5375bde0ed/main.spi
00:00:07 #196 [Verbose] >
00:00:07 #197 [Verbose] > ╭─[ 125.30ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #198 [Verbose] > │ ()                                                                           │
00:00:07 #199 [Verbose] > │                                                                              │
00:00:07 #200 [Verbose] > │                                                                              │
00:00:07 #201 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #202 [Verbose] >
00:00:07 #203 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #204 [Verbose] > // // test
00:00:07 #205 [Verbose] >
00:00:07 #206 [Verbose] > listm.init 10i32 id
00:00:07 #207 [Verbose] > |> from_list
00:00:07 #208 [Verbose] > |> item 9i32
00:00:07 #209 [Verbose] > |> _equal 9
00:00:07 #210 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1490-9038-9f52c0f4f798/main.spi
00:00:07 #211 [Verbose] >
00:00:07 #212 [Verbose] > ╭─[ 132.02ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #213 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #214 [Verbose] > │     let v0 : string = $"__expect / actual: %A{9} / expected: %A{9}"          │
00:00:07 #215 [Verbose] > │     ()                                                                       │
00:00:07 #216 [Verbose] > │ method0()                                                                    │
00:00:07 #217 [Verbose] > │                                                                              │
00:00:07 #218 [Verbose] > │                                                                              │
00:00:07 #219 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #220 [Verbose] >
00:00:07 #221 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #222 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #223 [Verbose] > │ ## new_infinite_stream                                                       │
00:00:07 #224 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #225 [Verbose] >
00:00:07 #226 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #227 [Verbose] > inl new_infinite_stream fn =
00:00:07 #228 [Verbose] >     inl rec loop n =
00:00:07 #229 [Verbose] >         StreamCons (fn n, fun () => loop (n + 1))
00:00:07 #230 [Verbose] >     loop 0
00:00:07 #231 [Verbose] >
00:00:07 #232 [Verbose] > inl new_infinite_stream_ fn =
00:00:07 #233 [Verbose] >     let rec loop n =
00:00:07 #234 [Verbose] >         StreamCons (fn n, fun () => loop (n + 1))
00:00:07 #235 [Verbose] >     loop 0
00:00:07 #236 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1503-0372-04ebb14520b8/main.spi
00:00:07 #237 [Verbose] >
00:00:07 #238 [Verbose] > ╭─[ 122.34ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #239 [Verbose] > │ ()                                                                           │
00:00:07 #240 [Verbose] > │                                                                              │
00:00:07 #241 [Verbose] > │                                                                              │
00:00:07 #242 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #243 [Verbose] >
00:00:07 #244 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #245 [Verbose] > // // test
00:00:07 #246 [Verbose] >
00:00:07 #247 [Verbose] > new_infinite_stream print_and_return
00:00:07 #248 [Verbose] > |> item 4i32
00:00:07 #249 [Verbose] > |> _equal 4i32
00:00:07 #250 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1515-1596-15899566a719/main.spi
00:00:08 #251 [Verbose] >
00:00:08 #252 [Verbose] > ╭─[ 152.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #253 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #254 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:08 #255 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:08 #256 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:08 #257 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:08 #258 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:08 #259 [Verbose] > │     let v0 : string = $"__expect / actual: %A{4} / expected: %A{4}"          │
00:00:08 #260 [Verbose] > │     ()                                                                       │
00:00:08 #261 [Verbose] > │ method0()                                                                    │
00:00:08 #262 [Verbose] > │                                                                              │
00:00:08 #263 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:08 #264 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:08 #265 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:08 #266 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:08 #267 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:08 #268 [Verbose] > │                                                                              │
00:00:08 #269 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #270 [Verbose] >
00:00:08 #271 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #272 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #273 [Verbose] > │ ## new_finite_stream                                                         │
00:00:08 #274 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #275 [Verbose] >
00:00:08 #276 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #277 [Verbose] > inl new_finite_stream fn max =
00:00:08 #278 [Verbose] >     inl rec loop n =
00:00:08 #279 [Verbose] >         if n >= max
00:00:08 #280 [Verbose] >         then StreamNil
00:00:08 #281 [Verbose] >         else StreamCons (fn n, fun () => loop (n + 1))
00:00:08 #282 [Verbose] >     loop 0
00:00:08 #283 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1531-3152-30cc2ba584d9/main.spi
00:00:08 #284 [Verbose] >
00:00:08 #285 [Verbose] > ╭─[ 126.02ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #286 [Verbose] > │ ()                                                                           │
00:00:08 #287 [Verbose] > │                                                                              │
00:00:08 #288 [Verbose] > │                                                                              │
00:00:08 #289 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #290 [Verbose] >
00:00:08 #291 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #292 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #293 [Verbose] > │ ## memoize                                                                   │
00:00:08 #294 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #295 [Verbose] >
00:00:08 #296 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #297 [Verbose] > union memoized_stream t =
00:00:08 #298 [Verbose] >     | NotComputed : () -> stream t
00:00:08 #299 [Verbose] >     | Computed : stream t
00:00:08 #300 [Verbose] >
00:00:08 #301 [Verbose] > inl memoize s =
00:00:08 #302 [Verbose] >     inl rec body s =
00:00:08 #303 [Verbose] >         inl state = mut (NotComputed s)
00:00:08 #304 [Verbose] >         fun () =>
00:00:08 #305 [Verbose] >             match *state with
00:00:08 #306 [Verbose] >             | Computed x => x
00:00:08 #307 [Verbose] >             | NotComputed fn =>
00:00:08 #308 [Verbose] >                 inl new_state =
00:00:08 #309 [Verbose] >                     match fn () with
00:00:08 #310 [Verbose] >                     | StreamNil => StreamNil
00:00:08 #311 [Verbose] >                     | StreamCons (x, fn) => StreamCons (x, loop fn)
00:00:08 #312 [Verbose] >                 state <- Computed new_state
00:00:08 #313 [Verbose] >                 new_state
00:00:08 #314 [Verbose] >     and inl loop s' = join_body_unit body s s'
00:00:08 #315 [Verbose] >     loop (fun () => s)
00:00:08 #316 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1544-4416-42ed59392531/main.spi
00:00:08 #317 [Verbose] >
00:00:08 #318 [Verbose] > ╭─[ 127.19ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #319 [Verbose] > │ ()                                                                           │
00:00:08 #320 [Verbose] > │                                                                              │
00:00:08 #321 [Verbose] > │                                                                              │
00:00:08 #322 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #323 [Verbose] >
00:00:08 #324 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #325 [Verbose] > // // test
00:00:08 #326 [Verbose] >
00:00:08 #327 [Verbose] > inl memo_stream = new_finite_stream print_and_return 10 |> memoize
00:00:08 #328 [Verbose] >
00:00:08 #329 [Verbose] > memo_stream ()
00:00:08 #330 [Verbose] > |> item 3i32
00:00:08 #331 [Verbose] > |> _equal 3i32
00:00:08 #332 [Verbose] >
00:00:08 #333 [Verbose] > memo_stream ()
00:00:08 #334 [Verbose] > |> item 5i32
00:00:08 #335 [Verbose] > |> _equal 5i32
00:00:08 #336 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1556-5695-5691efe9b1d9/main.spi
00:00:08 #337 [Verbose] >
00:00:09 #338 [Verbose] > ╭─[ 664.44ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #339 [Verbose] > │ type UH0 =                                                                   │
00:00:09 #340 [Verbose] > │     | UH0_0 of int32 * (unit -> UH0)                                         │
00:00:09 #341 [Verbose] > │     | UH0_1                                                                  │
00:00:09 #342 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:09 #343 [Verbose] > │     | US0_0 of f0_0 : UH0                                                    │
00:00:09 #344 [Verbose] > │     | US0_1 of f1_0 : (unit -> UH0)                                          │
00:00:09 #345 [Verbose] > │ and Mut0 = {mutable l0 : US0}                                                │
00:00:09 #346 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:09 #347 [Verbose] > │     | US1_0                                                                  │
00:00:09 #348 [Verbose] > │     | US1_1 of f1_0 : int32                                                  │
00:00:09 #349 [Verbose] > │ let rec closure10 () () : UH0 =                                              │
00:00:09 #350 [Verbose] > │     UH0_1                                                                    │
00:00:09 #351 [Verbose] > │ and closure9 () () : UH0 =                                                   │
00:00:09 #352 [Verbose] > │     printfn $"print_and_return / x: {9}"                                     │
00:00:09 #353 [Verbose] > │     let v0 : (unit -> UH0) = closure10()                                     │
00:00:09 #354 [Verbose] > │     UH0_0(9, v0)                                                             │
00:00:09 #355 [Verbose] > │ and closure8 () () : UH0 =                                                   │
00:00:09 #356 [Verbose] > │     printfn $"print_and_return / x: {8}"                                     │
00:00:09 #357 [Verbose] > │     let v0 : (unit -> UH0) = closure9()                                      │
00:00:09 #358 [Verbose] > │     UH0_0(8, v0)                                                             │
00:00:09 #359 [Verbose] > │ and closure7 () () : UH0 =                                                   │
00:00:09 #360 [Verbose] > │     printfn $"print_and_return / x: {7}"                                     │
00:00:09 #361 [Verbose] > │     let v0 : (unit -> UH0) = closure8()                                      │
00:00:09 #362 [Verbose] > │     UH0_0(7, v0)                                                             │
00:00:09 #363 [Verbose] > │ and closure6 () () : UH0 =                                                   │
00:00:09 #364 [Verbose] > │     printfn $"print_and_return / x: {6}"                                     │
00:00:09 #365 [Verbose] > │     let v0 : (unit -> UH0) = closure7()                                      │
00:00:09 #366 [Verbose] > │     UH0_0(6, v0)                                                             │
00:00:09 #367 [Verbose] > │ and closure5 () () : UH0 =                                                   │
00:00:09 #368 [Verbose] > │     printfn $"print_and_return / x: {5}"                                     │
00:00:09 #369 [Verbose] > │     let v0 : (unit -> UH0) = closure6()                                      │
00:00:09 #370 [Verbose] > │     UH0_0(5, v0)                                                             │
00:00:09 #371 [Verbose] > │ and closure4 () () : UH0 =                                                   │
00:00:09 #372 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:09 #373 [Verbose] > │     let v0 : (unit -> UH0) = closure5()                                      │
00:00:09 #374 [Verbose] > │     UH0_0(4, v0)                                                             │
00:00:09 #375 [Verbose] > │ and closure3 () () : UH0 =                                                   │
00:00:09 #376 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:09 #377 [Verbose] > │     let v0 : (unit -> UH0) = closure4()                                      │
00:00:09 #378 [Verbose] > │     UH0_0(3, v0)                                                             │
00:00:09 #379 [Verbose] > │ and closure2 () () : UH0 =                                                   │
00:00:09 #380 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:09 #381 [Verbose] > │     let v0 : (unit -> UH0) = closure3()                                      │
00:00:09 #382 [Verbose] > │     UH0_0(2, v0)                                                             │
00:00:09 #383 [Verbose] > │ and closure1 () () : UH0 =                                                   │
00:00:09 #384 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:09 #385 [Verbose] > │     let v0 : (unit -> UH0) = closure2()                                      │
00:00:09 #386 [Verbose] > │     UH0_0(1, v0)                                                             │
00:00:09 #387 [Verbose] > │ and closure0 () () : UH0 =                                                   │
00:00:09 #388 [Verbose] > │     let v0 : (unit -> UH0) = closure1()                                      │
00:00:09 #389 [Verbose] > │     UH0_0(0, v0)                                                             │
00:00:09 #390 [Verbose] > │ and closure11 (v0 : Mut0) () : UH0 =                                         │
00:00:09 #391 [Verbose] > │     let v1 : US0 = v0.l0                                                     │
00:00:09 #392 [Verbose] > │     match v1 with                                                            │
00:00:09 #393 [Verbose] > │     | US0_0(v2) -> (* Computed *)                                            │
00:00:09 #394 [Verbose] > │         v2                                                                   │
00:00:09 #395 [Verbose] > │     | US0_1(v3) -> (* NotComputed *)                                         │
00:00:09 #396 [Verbose] > │         let v4 : UH0 = v3 ()                                                 │
00:00:09 #397 [Verbose] > │         let v13 : UH0 =                                                      │
00:00:09 #398 [Verbose] > │             match v4 with                                                    │
00:00:09 #399 [Verbose] > │             | UH0_0(v6, v7) -> (* StreamCons *)                              │
00:00:09 #400 [Verbose] > │                 let v8 : US0 = US0_1(v7)                                     │
00:00:09 #401 [Verbose] > │                 let v9 : Mut0 = {l0 = v8} : Mut0                             │
00:00:09 #402 [Verbose] > │                 let v10 : (unit -> UH0) = closure11(v9)                      │
00:00:09 #403 [Verbose] > │                 UH0_0(v6, v10)                                               │
00:00:09 #404 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:09 #405 [Verbose] > │                 UH0_1                                                        │
00:00:09 #406 [Verbose] > │         let v14 : US0 = US0_0(v13)                                           │
00:00:09 #407 [Verbose] > │         v0.l0 <- v14                                                         │
00:00:09 #408 [Verbose] > │         v13                                                                  │
00:00:09 #409 [Verbose] > │ and method1 (v0 : int32, v1 : UH0) : US1 =                                   │
00:00:09 #410 [Verbose] > │     match v1 with                                                            │
00:00:09 #411 [Verbose] > │     | UH0_0(v2, v3) -> (* StreamCons *)                                      │
00:00:09 #412 [Verbose] > │         let v4 : bool = v0 <= 0                                              │
00:00:09 #413 [Verbose] > │         if v4 then                                                           │
00:00:09 #414 [Verbose] > │             US1_1(v2)                                                        │
00:00:09 #415 [Verbose] > │         else                                                                 │
00:00:09 #416 [Verbose] > │             let v6 : int32 = v0 - 1                                          │
00:00:09 #417 [Verbose] > │             let v7 : UH0 = v3 ()                                             │
00:00:09 #418 [Verbose] > │             method1(v6, v7)                                                  │
00:00:09 #419 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:09 #420 [Verbose] > │         US1_0                                                                │
00:00:09 #421 [Verbose] > │ and method0 () : unit =                                                      │
00:00:09 #422 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:09 #423 [Verbose] > │     let v0 : (unit -> UH0) = closure0()                                      │
00:00:09 #424 [Verbose] > │     let v1 : US0 = US0_1(v0)                                                 │
00:00:09 #425 [Verbose] > │     let v2 : Mut0 = {l0 = v1} : Mut0                                         │
00:00:09 #426 [Verbose] > │     let v3 : US0 = v2.l0                                                     │
00:00:09 #427 [Verbose] > │     let v18 : UH0 =                                                          │
00:00:09 #428 [Verbose] > │         match v3 with                                                        │
00:00:09 #429 [Verbose] > │         | US0_0(v4) -> (* Computed *)                                        │
00:00:09 #430 [Verbose] > │             v4                                                               │
00:00:09 #431 [Verbose] > │         | US0_1(v5) -> (* NotComputed *)                                     │
00:00:09 #432 [Verbose] > │             let v6 : UH0 = v5 ()                                             │
00:00:09 #433 [Verbose] > │             let v15 : UH0 =                                                  │
00:00:09 #434 [Verbose] > │                 match v6 with                                                │
00:00:09 #435 [Verbose] > │                 | UH0_0(v8, v9) -> (* StreamCons *)                          │
00:00:09 #436 [Verbose] > │                     let v10 : US0 = US0_1(v9)                                │
00:00:09 #437 [Verbose] > │                     let v11 : Mut0 = {l0 = v10} : Mut0                       │
00:00:09 #438 [Verbose] > │                     let v12 : (unit -> UH0) = closure11(v11)                 │
00:00:09 #439 [Verbose] > │                     UH0_0(v8, v12)                                           │
00:00:09 #440 [Verbose] > │                 | UH0_1 -> (* StreamNil *)                                   │
00:00:09 #441 [Verbose] > │                     UH0_1                                                    │
00:00:09 #442 [Verbose] > │             let v16 : US0 = US0_0(v15)                                       │
00:00:09 #443 [Verbose] > │             v2.l0 <- v16                                                     │
00:00:09 #444 [Verbose] > │             v15                                                              │
00:00:09 #445 [Verbose] > │     let v19 : int32 = 3                                                      │
00:00:09 #446 [Verbose] > │     let v20 : US1 = method1(v19, v18)                                        │
00:00:09 #447 [Verbose] > │     let v24 : int32 =                                                        │
00:00:09 #448 [Verbose] > │         match v20 with                                                       │
00:00:09 #449 [Verbose] > │         | US1_0 -> (* None *)                                                │
00:00:09 #450 [Verbose] > │             failwith<int32> "Option does not have a value."                  │
00:00:09 #451 [Verbose] > │         | US1_1(v21) -> (* Some *)                                           │
00:00:09 #452 [Verbose] > │             v21                                                              │
00:00:09 #453 [Verbose] > │     let v25 : string = $"__expect / actual: %A{v24} / expected: %A{3}"       │
00:00:09 #454 [Verbose] > │     let v26 : bool = v24 = 3                                                 │
00:00:09 #455 [Verbose] > │     let v27 : bool = v26 = false                                             │
00:00:09 #456 [Verbose] > │     if v27 then                                                              │
00:00:09 #457 [Verbose] > │         failwith<unit> v25                                                   │
00:00:09 #458 [Verbose] > │     let v28 : US0 = v2.l0                                                    │
00:00:09 #459 [Verbose] > │     let v43 : UH0 =                                                          │
00:00:09 #460 [Verbose] > │         match v28 with                                                       │
00:00:09 #461 [Verbose] > │         | US0_0(v29) -> (* Computed *)                                       │
00:00:09 #462 [Verbose] > │             v29                                                              │
00:00:09 #463 [Verbose] > │         | US0_1(v30) -> (* NotComputed *)                                    │
00:00:09 #464 [Verbose] > │             let v31 : UH0 = v30 ()                                           │
00:00:09 #465 [Verbose] > │             let v40 : UH0 =                                                  │
00:00:09 #466 [Verbose] > │                 match v31 with                                               │
00:00:09 #467 [Verbose] > │                 | UH0_0(v33, v34) -> (* StreamCons *)                        │
00:00:09 #468 [Verbose] > │                     let v35 : US0 = US0_1(v34)                               │
00:00:09 #469 [Verbose] > │                     let v36 : Mut0 = {l0 = v35} : Mut0                       │
00:00:09 #470 [Verbose] > │                     let v37 : (unit -> UH0) = closure11(v36)                 │
00:00:09 #471 [Verbose] > │                     UH0_0(v33, v37)                                          │
00:00:09 #472 [Verbose] > │                 | UH0_1 -> (* StreamNil *)                                   │
00:00:09 #473 [Verbose] > │                     UH0_1                                                    │
00:00:09 #474 [Verbose] > │             let v41 : US0 = US0_0(v40)                                       │
00:00:09 #475 [Verbose] > │             v2.l0 <- v41                                                     │
00:00:09 #476 [Verbose] > │             v40                                                              │
00:00:09 #477 [Verbose] > │     let v44 : int32 = 5                                                      │
00:00:09 #478 [Verbose] > │     let v45 : US1 = method1(v44, v43)                                        │
00:00:09 #479 [Verbose] > │     let v49 : int32 =                                                        │
00:00:09 #480 [Verbose] > │         match v45 with                                                       │
00:00:09 #481 [Verbose] > │         | US1_0 -> (* None *)                                                │
00:00:09 #482 [Verbose] > │             failwith<int32> "Option does not have a value."                  │
00:00:09 #483 [Verbose] > │         | US1_1(v46) -> (* Some *)                                           │
00:00:09 #484 [Verbose] > │             v46                                                              │
00:00:09 #485 [Verbose] > │     let v50 : string = $"__expect / actual: %A{v49} / expected: %A{5}"       │
00:00:09 #486 [Verbose] > │     let v51 : bool = v49 = 5                                                 │
00:00:09 #487 [Verbose] > │     let v52 : bool = v51 = false                                             │
00:00:09 #488 [Verbose] > │     if v52 then                                                              │
00:00:09 #489 [Verbose] > │         failwith<unit> v50                                                   │
00:00:09 #490 [Verbose] > │ method0()                                                                    │
00:00:09 #491 [Verbose] > │                                                                              │
00:00:09 #492 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:09 #493 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:09 #494 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:09 #495 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:09 #496 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:09 #497 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:09 #498 [Verbose] > │                                                                              │
00:00:09 #499 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #500 [Verbose] >
00:00:09 #501 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #502 [Verbose] > // // test
00:00:09 #503 [Verbose] >
00:00:09 #504 [Verbose] > inl memo_stream = new_infinite_stream_ print_and_return |> memoize
00:00:09 #505 [Verbose] >
00:00:09 #506 [Verbose] > memo_stream ()
00:00:09 #507 [Verbose] > |> item 3i32
00:00:09 #508 [Verbose] > |> _equal 3i32
00:00:09 #509 [Verbose] >
00:00:09 #510 [Verbose] > memo_stream ()
00:00:09 #511 [Verbose] > |> item 5i32
00:00:09 #512 [Verbose] > |> _equal 5i32
00:00:09 #513 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1624-2435-22ea6fd13b60/main.spi
00:00:09 #514 [Verbose] >
00:00:09 #515 [Verbose] > ╭─[ 197.36ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #516 [Verbose] > │ type UH0 =                                                                   │
00:00:09 #517 [Verbose] > │     | UH0_0 of int32 * (unit -> UH0)                                         │
00:00:09 #518 [Verbose] > │     | UH0_1                                                                  │
00:00:09 #519 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:09 #520 [Verbose] > │     | US0_0 of f0_0 : UH0                                                    │
00:00:09 #521 [Verbose] > │     | US0_1 of f1_0 : (unit -> UH0)                                          │
00:00:09 #522 [Verbose] > │ and Mut0 = {mutable l0 : US0}                                                │
00:00:09 #523 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:09 #524 [Verbose] > │     | US1_0                                                                  │
00:00:09 #525 [Verbose] > │     | US1_1 of f1_0 : int32                                                  │
00:00:09 #526 [Verbose] > │ let rec closure0 (v0 : int32) () : UH0 =                                     │
00:00:09 #527 [Verbose] > │     let v1 : int32 = v0 + 1                                                  │
00:00:09 #528 [Verbose] > │     method1(v1)                                                              │
00:00:09 #529 [Verbose] > │ and method1 (v0 : int32) : UH0 =                                             │
00:00:09 #530 [Verbose] > │     printfn $"print_and_return / x: {v0}"                                    │
00:00:09 #531 [Verbose] > │     let v1 : (unit -> UH0) = closure0(v0)                                    │
00:00:09 #532 [Verbose] > │     UH0_0(v0, v1)                                                            │
00:00:09 #533 [Verbose] > │ and closure1 (v0 : UH0) () : UH0 =                                           │
00:00:09 #534 [Verbose] > │     v0                                                                       │
00:00:09 #535 [Verbose] > │ and closure2 (v0 : UH0, v1 : Mut0) () : UH0 =                                │
00:00:09 #536 [Verbose] > │     let v2 : US0 = v1.l0                                                     │
00:00:09 #537 [Verbose] > │     match v2 with                                                            │
00:00:09 #538 [Verbose] > │     | US0_0(v3) -> (* Computed *)                                            │
00:00:09 #539 [Verbose] > │         v3                                                                   │
00:00:09 #540 [Verbose] > │     | US0_1(v4) -> (* NotComputed *)                                         │
00:00:09 #541 [Verbose] > │         let v5 : UH0 = v4 ()                                                 │
00:00:09 #542 [Verbose] > │         let v12 : UH0 =                                                      │
00:00:09 #543 [Verbose] > │             match v5 with                                                    │
00:00:09 #544 [Verbose] > │             | UH0_0(v7, v8) -> (* StreamCons *)                              │
00:00:09 #545 [Verbose] > │                 let v9 : (unit -> UH0) = method2(v0, v8)                     │
00:00:09 #546 [Verbose] > │                 UH0_0(v7, v9)                                                │
00:00:09 #547 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:09 #548 [Verbose] > │                 UH0_1                                                        │
00:00:09 #549 [Verbose] > │         let v13 : US0 = US0_0(v12)                                           │
00:00:09 #550 [Verbose] > │         v1.l0 <- v13                                                         │
00:00:09 #551 [Verbose] > │         v12                                                                  │
00:00:09 #552 [Verbose] > │ and method2 (v0 : UH0, v1 : (unit -> UH0)) : (unit -> UH0) =                 │
00:00:09 #553 [Verbose] > │     let v2 : US0 = US0_1(v1)                                                 │
00:00:09 #554 [Verbose] > │     let v3 : Mut0 = {l0 = v2} : Mut0                                         │
00:00:09 #555 [Verbose] > │     closure2(v0, v3)                                                         │
00:00:09 #556 [Verbose] > │ and method3 (v0 : int32, v1 : UH0) : US1 =                                   │
00:00:09 #557 [Verbose] > │     match v1 with                                                            │
00:00:09 #558 [Verbose] > │     | UH0_0(v2, v3) -> (* StreamCons *)                                      │
00:00:09 #559 [Verbose] > │         let v4 : bool = v0 <= 0                                              │
00:00:09 #560 [Verbose] > │         if v4 then                                                           │
00:00:09 #561 [Verbose] > │             US1_1(v2)                                                        │
00:00:09 #562 [Verbose] > │         else                                                                 │
00:00:09 #563 [Verbose] > │             let v6 : int32 = v0 - 1                                          │
00:00:09 #564 [Verbose] > │             let v7 : UH0 = v3 ()                                             │
00:00:09 #565 [Verbose] > │             method3(v6, v7)                                                  │
00:00:09 #566 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:09 #567 [Verbose] > │         US1_0                                                                │
00:00:09 #568 [Verbose] > │ and method0 () : unit =                                                      │
00:00:09 #569 [Verbose] > │     let v0 : int32 = 0                                                       │
00:00:09 #570 [Verbose] > │     let v1 : UH0 = method1(v0)                                               │
00:00:09 #571 [Verbose] > │     let v2 : (unit -> UH0) = closure1(v1)                                    │
00:00:09 #572 [Verbose] > │     let v3 : (unit -> UH0) = method2(v1, v2)                                 │
00:00:09 #573 [Verbose] > │     let v4 : UH0 = v3 ()                                                     │
00:00:09 #574 [Verbose] > │     let v5 : int32 = 3                                                       │
00:00:09 #575 [Verbose] > │     let v6 : US1 = method3(v5, v4)                                           │
00:00:09 #576 [Verbose] > │     let v10 : int32 =                                                        │
00:00:09 #577 [Verbose] > │         match v6 with                                                        │
00:00:09 #578 [Verbose] > │         | US1_0 -> (* None *)                                                │
00:00:09 #579 [Verbose] > │             failwith<int32> "Option does not have a value."                  │
00:00:09 #580 [Verbose] > │         | US1_1(v7) -> (* Some *)                                            │
00:00:09 #581 [Verbose] > │             v7                                                               │
00:00:09 #582 [Verbose] > │     let v11 : string = $"__expect / actual: %A{v10} / expected: %A{3}"       │
00:00:09 #583 [Verbose] > │     let v12 : bool = v10 = 3                                                 │
00:00:09 #584 [Verbose] > │     let v13 : bool = v12 = false                                             │
00:00:09 #585 [Verbose] > │     if v13 then                                                              │
00:00:09 #586 [Verbose] > │         failwith<unit> v11                                                   │
00:00:09 #587 [Verbose] > │     let v14 : UH0 = v3 ()                                                    │
00:00:09 #588 [Verbose] > │     let v15 : int32 = 5                                                      │
00:00:09 #589 [Verbose] > │     let v16 : US1 = method3(v15, v14)                                        │
00:00:09 #590 [Verbose] > │     let v20 : int32 =                                                        │
00:00:09 #591 [Verbose] > │         match v16 with                                                       │
00:00:09 #592 [Verbose] > │         | US1_0 -> (* None *)                                                │
00:00:09 #593 [Verbose] > │             failwith<int32> "Option does not have a value."                  │
00:00:09 #594 [Verbose] > │         | US1_1(v17) -> (* Some *)                                           │
00:00:09 #595 [Verbose] > │             v17                                                              │
00:00:09 #596 [Verbose] > │     let v21 : string = $"__expect / actual: %A{v20} / expected: %A{5}"       │
00:00:09 #597 [Verbose] > │     let v22 : bool = v20 = 5                                                 │
00:00:09 #598 [Verbose] > │     let v23 : bool = v22 = false                                             │
00:00:09 #599 [Verbose] > │     if v23 then                                                              │
00:00:09 #600 [Verbose] > │         failwith<unit> v21                                                   │
00:00:09 #601 [Verbose] > │ method0()                                                                    │
00:00:09 #602 [Verbose] > │                                                                              │
00:00:09 #603 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:09 #604 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:09 #605 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:09 #606 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:09 #607 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:09 #608 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:09 #609 [Verbose] > │                                                                              │
00:00:09 #610 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #611 [Verbose] >
00:00:09 #612 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #613 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #614 [Verbose] > │ ## unfold                                                                    │
00:00:09 #615 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #616 [Verbose] >
00:00:09 #617 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #618 [Verbose] > inl unfold f x0 =
00:00:09 #619 [Verbose] >     inl rec body x =
00:00:09 #620 [Verbose] >         match f x with
00:00:09 #621 [Verbose] >         | Some (x', y) => StreamCons (x', fun () => loop y)
00:00:09 #622 [Verbose] >         | None => StreamNil
00:00:09 #623 [Verbose] >     and inl loop x = join_body_unit body x0 x
00:00:09 #624 [Verbose] >     loop x0
00:00:09 #625 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1644-4457-4ad39c739046/main.spi
00:00:09 #626 [Verbose] >
00:00:09 #627 [Verbose] > ╭─[ 122.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #628 [Verbose] > │ ()                                                                           │
00:00:09 #629 [Verbose] > │                                                                              │
00:00:09 #630 [Verbose] > │                                                                              │
00:00:09 #631 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #632 [Verbose] >
00:00:09 #633 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #634 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #635 [Verbose] > │ ## iterate                                                                   │
00:00:09 #636 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #637 [Verbose] >
00:00:09 #638 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #639 [Verbose] > inl iterate f =
00:00:09 #640 [Verbose] >     unfold (fun x => Some (x, f x))
00:00:09 #641 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1656-5681-526749f91ab3/main.spi
00:00:09 #642 [Verbose] >
00:00:09 #643 [Verbose] > ╭─[ 119.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #644 [Verbose] > │ ()                                                                           │
00:00:09 #645 [Verbose] > │                                                                              │
00:00:09 #646 [Verbose] > │                                                                              │
00:00:09 #647 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #648 [Verbose] >
00:00:09 #649 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #650 [Verbose] > // // test
00:00:09 #651 [Verbose] >
00:00:09 #652 [Verbose] > iterate ((*) 2) 1i32
00:00:09 #653 [Verbose] > |> item 10i32
00:00:09 #654 [Verbose] > |> _equal 1024
00:00:09 #655 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1668-6881-6c66c920c768/main.spi
00:00:09 #656 [Verbose] >
00:00:09 #657 [Verbose] > ╭─[ 126.33ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #658 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #659 [Verbose] > │     let v0 : string = $"__expect / actual: %A{1024} / expected: %A{1024}"    │
00:00:09 #660 [Verbose] > │     ()                                                                       │
00:00:09 #661 [Verbose] > │ method0()                                                                    │
00:00:09 #662 [Verbose] > │                                                                              │
00:00:09 #663 [Verbose] > │                                                                              │
00:00:09 #664 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #665 [Verbose] >
00:00:09 #666 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #667 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #668 [Verbose] > │ ## take_while                                                                │
00:00:09 #669 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #670 [Verbose] >
00:00:09 #671 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #672 [Verbose] > inl take_while cond s =
00:00:09 #673 [Verbose] >     inl rec body i = function
00:00:09 #674 [Verbose] >         | StreamCons (st, fn) when cond st i => StreamCons (st, fun () => loop
00:00:09 #675 [Verbose] > (i + 1) (fn ()))
00:00:09 #676 [Verbose] >         | _ => StreamNil
00:00:09 #677 [Verbose] >     and inl loop i = join_body body i
00:00:09 #678 [Verbose] >     loop 0 s
00:00:09 #679 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1681-8162-8e1cfd0e8827/main.spi
00:00:09 #680 [Verbose] >
00:00:09 #681 [Verbose] > ╭─[ 121.13ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #682 [Verbose] > │ ()                                                                           │
00:00:09 #683 [Verbose] > │                                                                              │
00:00:09 #684 [Verbose] > │                                                                              │
00:00:09 #685 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #686 [Verbose] >
00:00:09 #687 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #688 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #689 [Verbose] > │ ## sum                                                                       │
00:00:09 #690 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #691 [Verbose] >
00:00:09 #692 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #693 [Verbose] > inl sum seq =
00:00:09 #694 [Verbose] >     seq |> fold (+) 0
00:00:09 #695 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1693-9382-92d522e0b6fb/main.spi
00:00:09 #696 [Verbose] >
00:00:09 #697 [Verbose] > ╭─[ 117.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #698 [Verbose] > │ ()                                                                           │
00:00:09 #699 [Verbose] > │                                                                              │
00:00:09 #700 [Verbose] > │                                                                              │
00:00:09 #701 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #702 [Verbose] >
00:00:09 #703 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #704 [Verbose] > // // test
00:00:09 #705 [Verbose] >
00:00:09 #706 [Verbose] > listm.init 10i32 id
00:00:09 #707 [Verbose] > |> from_list
00:00:09 #708 [Verbose] > |> sum
00:00:09 #709 [Verbose] > |> _equal 45
00:00:09 #710 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1705-0558-046cc512e278/main.spi
00:00:09 #711 [Verbose] >
00:00:09 #712 [Verbose] > ╭─[ 130.43ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #713 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #714 [Verbose] > │     let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}"        │
00:00:09 #715 [Verbose] > │     ()                                                                       │
00:00:09 #716 [Verbose] > │ method0()                                                                    │
00:00:09 #717 [Verbose] > │                                                                              │
00:00:09 #718 [Verbose] > │                                                                              │
00:00:09 #719 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #720 [Verbose] >
00:00:09 #721 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #722 [Verbose] > // // test
00:00:09 #723 [Verbose] >
00:00:09 #724 [Verbose] > new_finite_stream print_and_return 10i32
00:00:09 #725 [Verbose] > |> take_while (fun n (_ : i32) => n < 5)
00:00:09 #726 [Verbose] > |> sum
00:00:09 #727 [Verbose] > |> _equal 10
00:00:10 #728 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1718-1874-17e31dc7b79c/main.spi
00:00:10 #729 [Verbose] >
00:00:10 #730 [Verbose] > ╭─[ 130.92ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #731 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #732 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:10 #733 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:10 #734 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:10 #735 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:10 #736 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:10 #737 [Verbose] > │     printfn $"print_and_return / x: {5}"                                     │
00:00:10 #738 [Verbose] > │     let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}"        │
00:00:10 #739 [Verbose] > │     ()                                                                       │
00:00:10 #740 [Verbose] > │ method0()                                                                    │
00:00:10 #741 [Verbose] > │                                                                              │
00:00:10 #742 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:10 #743 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:10 #744 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:10 #745 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:10 #746 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:10 #747 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:10 #748 [Verbose] > │                                                                              │
00:00:10 #749 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #750 [Verbose] >
00:00:10 #751 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #752 [Verbose] > // // test
00:00:10 #753 [Verbose] >
00:00:10 #754 [Verbose] > new_infinite_stream print_and_return
00:00:10 #755 [Verbose] > |> take_while (fun n (_ : i32) => n < 5i32)
00:00:10 #756 [Verbose] > |> sum
00:00:10 #757 [Verbose] > |> _equal 10
00:00:10 #758 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1732-3218-39d7efde1461/main.spi
00:00:10 #759 [Verbose] >
00:00:10 #760 [Verbose] > ╭─[ 127.52ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #761 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #762 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:10 #763 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:10 #764 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:10 #765 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:10 #766 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:10 #767 [Verbose] > │     printfn $"print_and_return / x: {5}"                                     │
00:00:10 #768 [Verbose] > │     let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}"        │
00:00:10 #769 [Verbose] > │     ()                                                                       │
00:00:10 #770 [Verbose] > │ method0()                                                                    │
00:00:10 #771 [Verbose] > │                                                                              │
00:00:10 #772 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:10 #773 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:10 #774 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:10 #775 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:10 #776 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:10 #777 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:10 #778 [Verbose] > │                                                                              │
00:00:10 #779 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #780 [Verbose] >
00:00:10 #781 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #782 [Verbose] > // // test
00:00:10 #783 [Verbose] >
00:00:10 #784 [Verbose] > iterate ((*) 6) 1i32
00:00:10 #785 [Verbose] > |> take_while (fun _ i => i <= 7i32)
00:00:10 #786 [Verbose] > |> to_list
00:00:10 #787 [Verbose] > |> _equal [[ 1i32; 6; 36; 216; 1296; 7776; 46656; 279936 ]]
00:00:10 #788 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1744-4484-460b929cfd1f/main.spi
00:00:10 #789 [Verbose] >
00:00:10 #790 [Verbose] > ╭─[ 151.50ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #791 [Verbose] > │ type UH0 =                                                                   │
00:00:10 #792 [Verbose] > │     | UH0_0 of int32 * UH0                                                   │
00:00:10 #793 [Verbose] > │     | UH0_1                                                                  │
00:00:10 #794 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #795 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:10 #796 [Verbose] > │     let v1 : UH0 = UH0_0(279936, v0)                                         │
00:00:10 #797 [Verbose] > │     let v2 : UH0 = UH0_0(46656, v1)                                          │
00:00:10 #798 [Verbose] > │     let v3 : UH0 = UH0_0(7776, v2)                                           │
00:00:10 #799 [Verbose] > │     let v4 : UH0 = UH0_0(1296, v3)                                           │
00:00:10 #800 [Verbose] > │     let v5 : UH0 = UH0_0(216, v4)                                            │
00:00:10 #801 [Verbose] > │     let v6 : UH0 = UH0_0(36, v5)                                             │
00:00:10 #802 [Verbose] > │     let v7 : UH0 = UH0_0(6, v6)                                              │
00:00:10 #803 [Verbose] > │     let v8 : UH0 = UH0_0(1, v7)                                              │
00:00:10 #804 [Verbose] > │     let v9 : UH0 = UH0_1                                                     │
00:00:10 #805 [Verbose] > │     let v10 : UH0 = UH0_0(279936, v9)                                        │
00:00:10 #806 [Verbose] > │     let v11 : UH0 = UH0_0(46656, v10)                                        │
00:00:10 #807 [Verbose] > │     let v12 : UH0 = UH0_0(7776, v11)                                         │
00:00:10 #808 [Verbose] > │     let v13 : UH0 = UH0_0(1296, v12)                                         │
00:00:10 #809 [Verbose] > │     let v14 : UH0 = UH0_0(216, v13)                                          │
00:00:10 #810 [Verbose] > │     let v15 : UH0 = UH0_0(36, v14)                                           │
00:00:10 #811 [Verbose] > │     let v16 : UH0 = UH0_0(6, v15)                                            │
00:00:10 #812 [Verbose] > │     let v17 : UH0 = UH0_0(1, v16)                                            │
00:00:10 #813 [Verbose] > │     let v18 : string = $"__expect / actual: %A{v8} / expected: %A{v17}"      │
00:00:10 #814 [Verbose] > │     ()                                                                       │
00:00:10 #815 [Verbose] > │ method0()                                                                    │
00:00:10 #816 [Verbose] > │                                                                              │
00:00:10 #817 [Verbose] > │                                                                              │
00:00:10 #818 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #819 [Verbose] >
00:00:10 #820 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #821 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #822 [Verbose] > │ ## indexed                                                                   │
00:00:10 #823 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #824 [Verbose] >
00:00:10 #825 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #826 [Verbose] > inl indexed s =
00:00:10 #827 [Verbose] >     ((StreamNil, 0), s)
00:00:10 #828 [Verbose] >     ||> fold fun (acc, i) x =>
00:00:10 #829 [Verbose] >         StreamCons ((i, x), fun () => acc), i + 1
00:00:10 #830 [Verbose] >     |> fst
00:00:10 #831 [Verbose] >     |> rev
00:00:10 #832 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1760-6023-671d19f4b7bc/main.spi
00:00:10 #833 [Verbose] >
00:00:10 #834 [Verbose] > ╭─[ 121.21ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #835 [Verbose] > │ ()                                                                           │
00:00:10 #836 [Verbose] > │                                                                              │
00:00:10 #837 [Verbose] > │                                                                              │
00:00:10 #838 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #839 [Verbose] >
00:00:10 #840 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #841 [Verbose] > // // test
00:00:10 #842 [Verbose] >
00:00:10 #843 [Verbose] > listm.init 10i32 ((*) 2)
00:00:10 #844 [Verbose] > |> from_list
00:00:10 #845 [Verbose] > |> indexed
00:00:10 #846 [Verbose] > |> item 5i32
00:00:10 #847 [Verbose] > |> _equal (5i32, 10i32)
00:00:10 #848 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1772-7242-792298a952aa/main.spi
00:00:10 #849 [Verbose] >
00:00:10 #850 [Verbose] > ╭─[ 140.03ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #851 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #852 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (5, 10)} / expected:    │
00:00:10 #853 [Verbose] > │ %A{struct (5, 10)}"                                                          │
00:00:10 #854 [Verbose] > │     ()                                                                       │
00:00:10 #855 [Verbose] > │ method0()                                                                    │
00:00:10 #856 [Verbose] > │                                                                              │
00:00:10 #857 [Verbose] > │                                                                              │
00:00:10 #858 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #859 [Verbose] >
00:00:10 #860 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #861 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #862 [Verbose] > │ ## map                                                                       │
00:00:10 #863 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #864 [Verbose] >
00:00:10 #865 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #866 [Verbose] > inl map fn s =
00:00:10 #867 [Verbose] >     (s, StreamNil)
00:00:10 #868 [Verbose] >     ||> fold_back fun x acc =>
00:00:10 #869 [Verbose] >         StreamCons (fn x, fun () => acc)
00:00:10 #870 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1786-8651-85c8118a3db0/main.spi
00:00:10 #871 [Verbose] >
00:00:10 #872 [Verbose] > ╭─[ 130.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #873 [Verbose] > │ ()                                                                           │
00:00:10 #874 [Verbose] > │                                                                              │
00:00:10 #875 [Verbose] > │                                                                              │
00:00:10 #876 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #877 [Verbose] >
00:00:10 #878 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #879 [Verbose] > // // test
00:00:10 #880 [Verbose] >
00:00:10 #881 [Verbose] > listm.init 10i32 id
00:00:10 #882 [Verbose] > |> from_list
00:00:10 #883 [Verbose] > |> map ((*) 2)
00:00:10 #884 [Verbose] > |> item 5i32
00:00:10 #885 [Verbose] > |> _equal 10i32
00:00:10 #886 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1799-9959-91dce1426871/main.spi
00:00:10 #887 [Verbose] >
00:00:10 #888 [Verbose] > ╭─[ 125.79ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #889 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #890 [Verbose] > │     let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}"        │
00:00:10 #891 [Verbose] > │     ()                                                                       │
00:00:10 #892 [Verbose] > │ method0()                                                                    │
00:00:10 #893 [Verbose] > │                                                                              │
00:00:10 #894 [Verbose] > │                                                                              │
00:00:10 #895 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #896 [Verbose] >
00:00:10 #897 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #898 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #899 [Verbose] > │ ## zip_with                                                                  │
00:00:10 #900 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #901 [Verbose] >
00:00:10 #902 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #903 [Verbose] > inl zip_with fn s1 s2 =
00:00:10 #904 [Verbose] >     inl rec loop s1 s2 =
00:00:10 #905 [Verbose] >         match s1, s2 with
00:00:10 #906 [Verbose] >         | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:00:10 #907 [Verbose] >             StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:00:10 #908 [Verbose] >         | StreamNil, _ | _, StreamNil => StreamNil
00:00:10 #909 [Verbose] >     loop s1 s2
00:00:10 #910 [Verbose] >
00:00:10 #911 [Verbose] > inl zip_with_ fn s1 s2 =
00:00:10 #912 [Verbose] >     let rec loop s1 s2 =
00:00:10 #913 [Verbose] >         match s1, s2 with
00:00:10 #914 [Verbose] >         | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:00:10 #915 [Verbose] >             StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:00:10 #916 [Verbose] >         | StreamNil, _ | _, StreamNil => StreamNil
00:00:10 #917 [Verbose] >     loop s1 s2
00:00:10 #918 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1812-1230-1beef797efe7/main.spi
00:00:11 #919 [Verbose] >
00:00:11 #920 [Verbose] > ╭─[ 125.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #921 [Verbose] > │ ()                                                                           │
00:00:11 #922 [Verbose] > │                                                                              │
00:00:11 #923 [Verbose] > │                                                                              │
00:00:11 #924 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #925 [Verbose] >
00:00:11 #926 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #927 [Verbose] > // // test
00:00:11 #928 [Verbose] >
00:00:11 #929 [Verbose] > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:00:11 #930 [Verbose] > ||> zip_with (+)
00:00:11 #931 [Verbose] > |> item 2i32
00:00:11 #932 [Verbose] > |> _equal 6
00:00:11 #933 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1824-2490-24740393ec30/main.spi
00:00:11 #934 [Verbose] >
00:00:11 #935 [Verbose] > ╭─[ 135.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #936 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:11 #937 [Verbose] > │     let v0 : string = $"__expect / actual: %A{6} / expected: %A{6}"          │
00:00:11 #938 [Verbose] > │     ()                                                                       │
00:00:11 #939 [Verbose] > │ method0()                                                                    │
00:00:11 #940 [Verbose] > │                                                                              │
00:00:11 #941 [Verbose] > │                                                                              │
00:00:11 #942 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #943 [Verbose] >
00:00:11 #944 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #945 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #946 [Verbose] > │ ## zip                                                                       │
00:00:11 #947 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #948 [Verbose] >
00:00:11 #949 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #950 [Verbose] > inl zip s1 s2 =
00:00:11 #951 [Verbose] >     zip_with pair s1 s2
00:00:11 #952 [Verbose] >
00:00:11 #953 [Verbose] > inl zip_ s1 s2 =
00:00:11 #954 [Verbose] >     zip_with_ pair s1 s2
00:00:11 #955 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1838-3853-3aa3aba65195/main.spi
00:00:11 #956 [Verbose] >
00:00:11 #957 [Verbose] > ╭─[ 121.69ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #958 [Verbose] > │ ()                                                                           │
00:00:11 #959 [Verbose] > │                                                                              │
00:00:11 #960 [Verbose] > │                                                                              │
00:00:11 #961 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #962 [Verbose] >
00:00:11 #963 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #964 [Verbose] > // // test
00:00:11 #965 [Verbose] >
00:00:11 #966 [Verbose] > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:00:11 #967 [Verbose] > ||> zip
00:00:11 #968 [Verbose] > |> item 5i32
00:00:11 #969 [Verbose] > |> _equal (5, 10)
00:00:11 #970 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1850-5081-5a9b21ce6b83/main.spi
00:00:11 #971 [Verbose] >
00:00:11 #972 [Verbose] > ╭─[ 126.97ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #973 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:11 #974 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (5, 10)} / expected:    │
00:00:11 #975 [Verbose] > │ %A{struct (5, 10)}"                                                          │
00:00:11 #976 [Verbose] > │     ()                                                                       │
00:00:11 #977 [Verbose] > │ method0()                                                                    │
00:00:11 #978 [Verbose] > │                                                                              │
00:00:11 #979 [Verbose] > │                                                                              │
00:00:11 #980 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #981 [Verbose] >
00:00:11 #982 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #983 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #984 [Verbose] > │ ## unzip                                                                     │
00:00:11 #985 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #986 [Verbose] >
00:00:11 #987 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #988 [Verbose] > inl unzip s =
00:00:11 #989 [Verbose] >     inl rec body s =
00:00:11 #990 [Verbose] >         match s with
00:00:11 #991 [Verbose] >         | StreamCons ((x, y), fn) =>
00:00:11 #992 [Verbose] >             inl xs, ys = loop (fn ())
00:00:11 #993 [Verbose] >             StreamCons (x, fun () => xs), StreamCons (y, fun () => ys)
00:00:11 #994 [Verbose] >         | StreamNil => pair StreamNil StreamNil
00:00:11 #995 [Verbose] >     and inl loop x =
00:00:11 #996 [Verbose] >         if var_is x |> not
00:00:11 #997 [Verbose] >         then body x
00:00:11 #998 [Verbose] >         else
00:00:11 #999 [Verbose] >             inl x = dyn x
00:00:11 #1000 [Verbose] >             join body x
00:00:11 #1001 [Verbose] >     loop s
00:00:11 #1002 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1863-6358-63ccab05eb4c/main.spi
00:00:11 #1003 [Verbose] >
00:00:11 #1004 [Verbose] > ╭─[ 131.05ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1005 [Verbose] > │ ()                                                                           │
00:00:11 #1006 [Verbose] > │                                                                              │
00:00:11 #1007 [Verbose] > │                                                                              │
00:00:11 #1008 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1009 [Verbose] >
00:00:11 #1010 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1011 [Verbose] > // // test
00:00:11 #1012 [Verbose] >
00:00:11 #1013 [Verbose] > listm.init 10i32 id
00:00:11 #1014 [Verbose] > |> listm.map (fun x => x, x)
00:00:11 #1015 [Verbose] > |> from_list
00:00:11 #1016 [Verbose] > |> unzip
00:00:11 #1017 [Verbose] > |> fun x, y =>
00:00:11 #1018 [Verbose] >     x |> sum
00:00:11 #1019 [Verbose] >     |> _equal 45
00:00:11 #1020 [Verbose] >
00:00:11 #1021 [Verbose] >     y |> sum
00:00:11 #1022 [Verbose] >     |> _equal 45
00:00:11 #1023 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-1876-7671-78223e29769b/main.spi
00:00:11 #1024 [Verbose] >
00:00:11 #1025 [Verbose] > ╭─[ 126.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1026 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:11 #1027 [Verbose] > │     let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}"        │
00:00:11 #1028 [Verbose] > │     let v1 : string = $"__expect / actual: %A{45} / expected: %A{45}"        │
00:00:11 #1029 [Verbose] > │     ()                                                                       │
00:00:11 #1030 [Verbose] > │ method0()                                                                    │
00:00:11 #1031 [Verbose] > │                                                                              │
00:00:11 #1032 [Verbose] > │                                                                              │
00:00:11 #1033 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1034 [Verbose] > [NbConvertApp] Converting notebook stream.dib.ipynb to html
00:00:12 #1035 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:12 #1036 [Verbose] >   validate(nb)
00:00:12 #1037 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:12 #1038 [Verbose] >   return _pygments_highlight(
00:00:13 #1039 [Verbose] > [NbConvertApp] Writing 358051 bytes to stream.dib.html
00:00:13 #1040 [Debug] executeAsync / exitCode: 0 / output.Length: 73371
00:00:13 #1041 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #15 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #16 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #17 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 seq.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #18 [Verbose] >
00:00:02 #19 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #20 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #21 [Verbose] > │ # seq                                                                        │
00:00:02 #22 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #23 [Verbose] >
00:00:02 #24 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #25 [Verbose] > // // test
00:00:02 #26 [Verbose] >
00:00:02 #27 [Verbose] > open testing
00:00:04 #28 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2467-6795-619d9ace1d31/main.spi
00:00:05 #29 [Verbose] >
00:00:05 #30 [Verbose] > ╭─[ 3.46s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #31 [Verbose] > │ ()                                                                           │
00:00:05 #32 [Verbose] > │                                                                              │
00:00:05 #33 [Verbose] > │                                                                              │
00:00:05 #34 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #35 [Verbose] >
00:00:05 #36 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #37 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #38 [Verbose] > │ ## seq                                                                       │
00:00:05 #39 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #40 [Verbose] >
00:00:05 #41 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #42 [Verbose] > type seq dim el = dim -> option el
00:00:05 #43 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2690-9065-95db505c9352/main.spi
00:00:05 #44 [Verbose] >
00:00:05 #45 [Verbose] > ╭─[ 140.11ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #46 [Verbose] > │ ()                                                                           │
00:00:05 #47 [Verbose] > │                                                                              │
00:00:05 #48 [Verbose] > │                                                                              │
00:00:05 #49 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #50 [Verbose] >
00:00:05 #51 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #52 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #53 [Verbose] > │ ## try_item                                                                  │
00:00:05 #54 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #55 [Verbose] >
00:00:05 #56 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #57 [Verbose] > inl try_item n s =
00:00:05 #58 [Verbose] >     n |> s
00:00:06 #59 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2704-0491-0c8021b586c2/main.spi
00:00:06 #60 [Verbose] >
00:00:06 #61 [Verbose] > ╭─[ 135.15ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #62 [Verbose] > │ ()                                                                           │
00:00:06 #63 [Verbose] > │                                                                              │
00:00:06 #64 [Verbose] > │                                                                              │
00:00:06 #65 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #66 [Verbose] >
00:00:06 #67 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 #68 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 #69 [Verbose] > │ ## from_list                                                                 │
00:00:06 #70 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #71 [Verbose] >
00:00:06 #72 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #73 [Verbose] > inl from_list list =
00:00:06 #74 [Verbose] >     fun n =>
00:00:06 #75 [Verbose] >         list
00:00:06 #76 [Verbose] >         |> listm'.try_item n
00:00:06 #77 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2718-1831-19ae19044bcf/main.spi
00:00:06 #78 [Verbose] >
00:00:06 #79 [Verbose] > ╭─[ 141.63ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #80 [Verbose] > │ ()                                                                           │
00:00:06 #81 [Verbose] > │                                                                              │
00:00:06 #82 [Verbose] > │                                                                              │
00:00:06 #83 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #84 [Verbose] >
00:00:06 #85 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #86 [Verbose] > // // test
00:00:06 #87 [Verbose] >
00:00:06 #88 [Verbose] > listm.init 10i32 print_and_return
00:00:06 #89 [Verbose] > |> from_list
00:00:06 #90 [Verbose] > |> try_item 5i32
00:00:06 #91 [Verbose] > |> _equal (Some 5i32)
00:00:06 #92 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2732-3257-3e6989a962f6/main.spi
00:00:07 #93 [Verbose] >
00:00:07 #94 [Verbose] > ╭─[ 940.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #95 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:07 #96 [Verbose] > │     | US0_0                                                                  │
00:00:07 #97 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:07 #98 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #99 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:07 #100 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:07 #101 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:07 #102 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:07 #103 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:07 #104 [Verbose] > │     printfn $"print_and_return / x: {5}"                                     │
00:00:07 #105 [Verbose] > │     printfn $"print_and_return / x: {6}"                                     │
00:00:07 #106 [Verbose] > │     printfn $"print_and_return / x: {7}"                                     │
00:00:07 #107 [Verbose] > │     printfn $"print_and_return / x: {8}"                                     │
00:00:07 #108 [Verbose] > │     printfn $"print_and_return / x: {9}"                                     │
00:00:07 #109 [Verbose] > │     let v0 : US0 = US0_1(5)                                                  │
00:00:07 #110 [Verbose] > │     let v1 : US0 = US0_1(5)                                                  │
00:00:07 #111 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:07 #112 [Verbose] > │     ()                                                                       │
00:00:07 #113 [Verbose] > │ method0()                                                                    │
00:00:07 #114 [Verbose] > │                                                                              │
00:00:07 #115 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:07 #116 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:07 #117 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:07 #118 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:07 #119 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:07 #120 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:07 #121 [Verbose] > │ print_and_return / x: 6                                                      │
00:00:07 #122 [Verbose] > │ print_and_return / x: 7                                                      │
00:00:07 #123 [Verbose] > │ print_and_return / x: 8                                                      │
00:00:07 #124 [Verbose] > │ print_and_return / x: 9                                                      │
00:00:07 #125 [Verbose] > │                                                                              │
00:00:07 #126 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #127 [Verbose] >
00:00:07 #128 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #129 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #130 [Verbose] > │ ## map                                                                       │
00:00:07 #131 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #132 [Verbose] >
00:00:07 #133 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #134 [Verbose] > inl map fn s =
00:00:07 #135 [Verbose] >     fun n =>
00:00:07 #136 [Verbose] >         n
00:00:07 #137 [Verbose] >         |> s
00:00:07 #138 [Verbose] >         |> optionm.map fn
00:00:07 #139 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2826-2681-2251c0d33c59/main.spi
00:00:07 #140 [Verbose] >
00:00:07 #141 [Verbose] > ╭─[ 127.48ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #142 [Verbose] > │ ()                                                                           │
00:00:07 #143 [Verbose] > │                                                                              │
00:00:07 #144 [Verbose] > │                                                                              │
00:00:07 #145 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #146 [Verbose] >
00:00:07 #147 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #148 [Verbose] > // // test
00:00:07 #149 [Verbose] >
00:00:07 #150 [Verbose] > listm.init 10i32 id
00:00:07 #151 [Verbose] > |> from_list
00:00:07 #152 [Verbose] > |> map ((*) 2)
00:00:07 #153 [Verbose] > |> try_item 5i32
00:00:07 #154 [Verbose] > |> _equal (Some 10i32)
00:00:07 #155 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2839-3957-36db34cd2fe4/main.spi
00:00:07 #156 [Verbose] >
00:00:07 #157 [Verbose] > ╭─[ 165.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #158 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:07 #159 [Verbose] > │     | US0_0                                                                  │
00:00:07 #160 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:07 #161 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #162 [Verbose] > │     let v0 : US0 = US0_1(10)                                                 │
00:00:07 #163 [Verbose] > │     let v1 : US0 = US0_1(10)                                                 │
00:00:07 #164 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:07 #165 [Verbose] > │     ()                                                                       │
00:00:07 #166 [Verbose] > │ method0()                                                                    │
00:00:07 #167 [Verbose] > │                                                                              │
00:00:07 #168 [Verbose] > │                                                                              │
00:00:07 #169 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #170 [Verbose] >
00:00:07 #171 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #172 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #173 [Verbose] > │ ## mapi                                                                      │
00:00:07 #174 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #175 [Verbose] >
00:00:07 #176 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #177 [Verbose] > inl mapi fn s =
00:00:07 #178 [Verbose] >     fun n =>
00:00:07 #179 [Verbose] >         n
00:00:07 #180 [Verbose] >         |> s
00:00:07 #181 [Verbose] >         |> optionm.map (fn n)
00:00:07 #182 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2856-5643-5effd2e0dd01/main.spi
00:00:07 #183 [Verbose] >
00:00:07 #184 [Verbose] > ╭─[ 124.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #185 [Verbose] > │ ()                                                                           │
00:00:07 #186 [Verbose] > │                                                                              │
00:00:07 #187 [Verbose] > │                                                                              │
00:00:07 #188 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #189 [Verbose] >
00:00:07 #190 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #191 [Verbose] > // // test
00:00:07 #192 [Verbose] >
00:00:07 #193 [Verbose] > listm.init 10i32 print_and_return
00:00:07 #194 [Verbose] > |> from_list
00:00:07 #195 [Verbose] > |> mapi fun i x => i + x
00:00:07 #196 [Verbose] > |> try_item 5i32
00:00:07 #197 [Verbose] > |> _equal (Some 10i32)
00:00:07 #198 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2868-6879-6488240ae3e7/main.spi
00:00:07 #199 [Verbose] >
00:00:07 #200 [Verbose] > ╭─[ 164.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #201 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:07 #202 [Verbose] > │     | US0_0                                                                  │
00:00:07 #203 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:07 #204 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:07 #205 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:07 #206 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:07 #207 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:07 #208 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:07 #209 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:07 #210 [Verbose] > │     printfn $"print_and_return / x: {5}"                                     │
00:00:07 #211 [Verbose] > │     printfn $"print_and_return / x: {6}"                                     │
00:00:07 #212 [Verbose] > │     printfn $"print_and_return / x: {7}"                                     │
00:00:07 #213 [Verbose] > │     printfn $"print_and_return / x: {8}"                                     │
00:00:07 #214 [Verbose] > │     printfn $"print_and_return / x: {9}"                                     │
00:00:07 #215 [Verbose] > │     let v0 : US0 = US0_1(10)                                                 │
00:00:07 #216 [Verbose] > │     let v1 : US0 = US0_1(10)                                                 │
00:00:07 #217 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:07 #218 [Verbose] > │     ()                                                                       │
00:00:07 #219 [Verbose] > │ method0()                                                                    │
00:00:07 #220 [Verbose] > │                                                                              │
00:00:07 #221 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:07 #222 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:07 #223 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:07 #224 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:07 #225 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:07 #226 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:07 #227 [Verbose] > │ print_and_return / x: 6                                                      │
00:00:07 #228 [Verbose] > │ print_and_return / x: 7                                                      │
00:00:07 #229 [Verbose] > │ print_and_return / x: 8                                                      │
00:00:07 #230 [Verbose] > │ print_and_return / x: 9                                                      │
00:00:07 #231 [Verbose] > │                                                                              │
00:00:07 #232 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #233 [Verbose] >
00:00:07 #234 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #235 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #236 [Verbose] > │ ## choose                                                                    │
00:00:07 #237 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #238 [Verbose] >
00:00:07 #239 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #240 [Verbose] > inl choose forall dim {number} t u. (fn : t -> option u) (s : seq dim t) : seq
00:00:07 #241 [Verbose] > dim u =
00:00:07 #242 [Verbose] >     fun n =>
00:00:07 #243 [Verbose] >         inl rec body fn s i i' =
00:00:07 #244 [Verbose] >             match i |> s with
00:00:07 #245 [Verbose] >             | None => None
00:00:07 #246 [Verbose] >             | Some x =>
00:00:07 #247 [Verbose] >                 match x |> fn with
00:00:07 #248 [Verbose] >                 | Some x when n = i' => Some x
00:00:07 #249 [Verbose] >                 | Some _ => loop (i + 1) (i' + 1)
00:00:07 #250 [Verbose] >                 | _ => loop (i + 1) i'
00:00:07 #251 [Verbose] >         and inl loop i i' =
00:00:07 #252 [Verbose] >             if n |> var_is |> not
00:00:07 #253 [Verbose] >             then body fn s i i'
00:00:07 #254 [Verbose] >             else
00:00:07 #255 [Verbose] >                 inl fn = join fn
00:00:07 #256 [Verbose] >                 inl s = join s
00:00:07 #257 [Verbose] >                 join body fn s i i'
00:00:07 #258 [Verbose] >         loop 0 0
00:00:07 #259 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2885-8569-89c02d4622a4/main.spi
00:00:07 #260 [Verbose] >
00:00:07 #261 [Verbose] > ╭─[ 128.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 #262 [Verbose] > │ ()                                                                           │
00:00:07 #263 [Verbose] > │                                                                              │
00:00:07 #264 [Verbose] > │                                                                              │
00:00:07 #265 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #266 [Verbose] >
00:00:07 #267 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 #268 [Verbose] > // // test
00:00:07 #269 [Verbose] >
00:00:07 #270 [Verbose] > listm.init 10i32 print_and_return
00:00:07 #271 [Verbose] > |> from_list
00:00:07 #272 [Verbose] > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:00:07 #273 [Verbose] > |> try_item 1i32
00:00:07 #274 [Verbose] > |> _equal (Some 2i32)
00:00:07 #275 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2898-9843-920e59569b96/main.spi
00:00:08 #276 [Verbose] >
00:00:08 #277 [Verbose] > ╭─[ 190.55ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #278 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:08 #279 [Verbose] > │     | US0_0                                                                  │
00:00:08 #280 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:08 #281 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #282 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:08 #283 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:08 #284 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:08 #285 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:08 #286 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:08 #287 [Verbose] > │     printfn $"print_and_return / x: {5}"                                     │
00:00:08 #288 [Verbose] > │     printfn $"print_and_return / x: {6}"                                     │
00:00:08 #289 [Verbose] > │     printfn $"print_and_return / x: {7}"                                     │
00:00:08 #290 [Verbose] > │     printfn $"print_and_return / x: {8}"                                     │
00:00:08 #291 [Verbose] > │     printfn $"print_and_return / x: {9}"                                     │
00:00:08 #292 [Verbose] > │     let v0 : US0 = US0_1(2)                                                  │
00:00:08 #293 [Verbose] > │     let v1 : US0 = US0_1(2)                                                  │
00:00:08 #294 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:08 #295 [Verbose] > │     ()                                                                       │
00:00:08 #296 [Verbose] > │ method0()                                                                    │
00:00:08 #297 [Verbose] > │                                                                              │
00:00:08 #298 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:08 #299 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:08 #300 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:08 #301 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:08 #302 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:08 #303 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:08 #304 [Verbose] > │ print_and_return / x: 6                                                      │
00:00:08 #305 [Verbose] > │ print_and_return / x: 7                                                      │
00:00:08 #306 [Verbose] > │ print_and_return / x: 8                                                      │
00:00:08 #307 [Verbose] > │ print_and_return / x: 9                                                      │
00:00:08 #308 [Verbose] > │                                                                              │
00:00:08 #309 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #310 [Verbose] >
00:00:08 #311 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #312 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #313 [Verbose] > │ ## indexed                                                                   │
00:00:08 #314 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #315 [Verbose] >
00:00:08 #316 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #317 [Verbose] > inl indexed s =
00:00:08 #318 [Verbose] >     s
00:00:08 #319 [Verbose] >     |> mapi fun i x =>
00:00:08 #320 [Verbose] >         i, x
00:00:08 #321 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2927-2792-2c1dd178a7f1/main.spi
00:00:08 #322 [Verbose] >
00:00:08 #323 [Verbose] > ╭─[ 131.09ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #324 [Verbose] > │ ()                                                                           │
00:00:08 #325 [Verbose] > │                                                                              │
00:00:08 #326 [Verbose] > │                                                                              │
00:00:08 #327 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #328 [Verbose] >
00:00:08 #329 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #330 [Verbose] > // // test
00:00:08 #331 [Verbose] >
00:00:08 #332 [Verbose] > listm.init 10i32 ((*) 2)
00:00:08 #333 [Verbose] > |> from_list
00:00:08 #334 [Verbose] > |> indexed
00:00:08 #335 [Verbose] > |> try_item 5i32
00:00:08 #336 [Verbose] > |> _equal (Some (5i32, 10i32))
00:00:08 #337 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2940-4099-4abe5b9081ab/main.spi
00:00:08 #338 [Verbose] >
00:00:08 #339 [Verbose] > ╭─[ 149.46ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #340 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:08 #341 [Verbose] > │     | US0_0                                                                  │
00:00:08 #342 [Verbose] > │     | US0_1 of f1_0 : int32 * f1_1 : int32                                   │
00:00:08 #343 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #344 [Verbose] > │     let v0 : US0 = US0_1(5, 10)                                              │
00:00:08 #345 [Verbose] > │     let v1 : US0 = US0_1(5, 10)                                              │
00:00:08 #346 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:08 #347 [Verbose] > │     ()                                                                       │
00:00:08 #348 [Verbose] > │ method0()                                                                    │
00:00:08 #349 [Verbose] > │                                                                              │
00:00:08 #350 [Verbose] > │                                                                              │
00:00:08 #351 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #352 [Verbose] >
00:00:08 #353 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #354 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #355 [Verbose] > │ ## zip                                                                       │
00:00:08 #356 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #357 [Verbose] >
00:00:08 #358 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #359 [Verbose] > inl zip n seq1 seq2 =
00:00:08 #360 [Verbose] >     seq1 n, seq2 n
00:00:08 #361 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2955-5595-5310cc32dcf2/main.spi
00:00:08 #362 [Verbose] >
00:00:08 #363 [Verbose] > ╭─[ 118.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #364 [Verbose] > │ ()                                                                           │
00:00:08 #365 [Verbose] > │                                                                              │
00:00:08 #366 [Verbose] > │                                                                              │
00:00:08 #367 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #368 [Verbose] >
00:00:08 #369 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #370 [Verbose] > // // test
00:00:08 #371 [Verbose] >
00:00:08 #372 [Verbose] > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:00:08 #373 [Verbose] > ||> zip 5i32
00:00:08 #374 [Verbose] > |> _equal (Some 5, Some 10)
00:00:08 #375 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2967-6790-605453b713a5/main.spi
00:00:08 #376 [Verbose] >
00:00:08 #377 [Verbose] > ╭─[ 167.34ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #378 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:08 #379 [Verbose] > │     | US0_0                                                                  │
00:00:08 #380 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:08 #381 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:08 #382 [Verbose] > │     let v0 : US0 = US0_1(5)                                                  │
00:00:08 #383 [Verbose] > │     let v1 : US0 = US0_1(10)                                                 │
00:00:08 #384 [Verbose] > │     let v2 : US0 = US0_1(5)                                                  │
00:00:08 #385 [Verbose] > │     let v3 : US0 = US0_1(10)                                                 │
00:00:08 #386 [Verbose] > │     let v4 : string = $"__expect / actual: %A{struct (v0, v1)} / expected:   │
00:00:08 #387 [Verbose] > │ %A{struct (v2, v3)}"                                                         │
00:00:08 #388 [Verbose] > │     ()                                                                       │
00:00:08 #389 [Verbose] > │ method0()                                                                    │
00:00:08 #390 [Verbose] > │                                                                              │
00:00:08 #391 [Verbose] > │                                                                              │
00:00:08 #392 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #393 [Verbose] >
00:00:08 #394 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #395 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #396 [Verbose] > │ ## zip_with                                                                  │
00:00:08 #397 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #398 [Verbose] >
00:00:08 #399 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #400 [Verbose] > inl zip_with fn seq1 seq2 =
00:00:08 #401 [Verbose] >     fun n =>
00:00:08 #402 [Verbose] >         fn (seq1 n) (seq2 n)
00:00:08 #403 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2984-8483-8ead304009bf/main.spi
00:00:08 #404 [Verbose] >
00:00:08 #405 [Verbose] > ╭─[ 123.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #406 [Verbose] > │ ()                                                                           │
00:00:08 #407 [Verbose] > │                                                                              │
00:00:08 #408 [Verbose] > │                                                                              │
00:00:08 #409 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #410 [Verbose] >
00:00:08 #411 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #412 [Verbose] > // // test
00:00:08 #413 [Verbose] >
00:00:08 #414 [Verbose] > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:00:08 #415 [Verbose] > ||> zip_with (optionm'.choose (+))
00:00:08 #416 [Verbose] > |> try_item 2i32
00:00:08 #417 [Verbose] > |> _equal (Some 6)
00:00:08 #418 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-2997-9717-911f7f6342be/main.spi
00:00:09 #419 [Verbose] >
00:00:09 #420 [Verbose] > ╭─[ 160.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #421 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:09 #422 [Verbose] > │     | US0_0                                                                  │
00:00:09 #423 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:09 #424 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #425 [Verbose] > │     let v0 : US0 = US0_1(6)                                                  │
00:00:09 #426 [Verbose] > │     let v1 : US0 = US0_1(6)                                                  │
00:00:09 #427 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:09 #428 [Verbose] > │     ()                                                                       │
00:00:09 #429 [Verbose] > │ method0()                                                                    │
00:00:09 #430 [Verbose] > │                                                                              │
00:00:09 #431 [Verbose] > │                                                                              │
00:00:09 #432 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #433 [Verbose] >
00:00:09 #434 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #435 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #436 [Verbose] > │ ## fold                                                                      │
00:00:09 #437 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #438 [Verbose] >
00:00:09 #439 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #440 [Verbose] > inl fold fn init seq =
00:00:09 #441 [Verbose] >     inl rec loop acc n =
00:00:09 #442 [Verbose] >         match seq n with
00:00:09 #443 [Verbose] >         | Some x => loop (fn acc x) (n + 1)
00:00:09 #444 [Verbose] >         | None => acc
00:00:09 #445 [Verbose] >     loop init 0
00:00:09 #446 [Verbose] >
00:00:09 #447 [Verbose] > inl fold_ fn init seq =
00:00:09 #448 [Verbose] >     let rec loop acc n =
00:00:09 #449 [Verbose] >         match seq n with
00:00:09 #450 [Verbose] >         | Some x => loop (fn acc x) (n + 1)
00:00:09 #451 [Verbose] >         | None => acc
00:00:09 #452 [Verbose] >     loop init 0
00:00:09 #453 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3013-1343-18548df2d014/main.spi
00:00:09 #454 [Verbose] >
00:00:09 #455 [Verbose] > ╭─[ 121.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #456 [Verbose] > │ ()                                                                           │
00:00:09 #457 [Verbose] > │                                                                              │
00:00:09 #458 [Verbose] > │                                                                              │
00:00:09 #459 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #460 [Verbose] >
00:00:09 #461 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #462 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #463 [Verbose] > │ ## sum                                                                       │
00:00:09 #464 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #465 [Verbose] >
00:00:09 #466 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #467 [Verbose] > inl sum seq =
00:00:09 #468 [Verbose] >     seq |> fold (+) 0
00:00:09 #469 [Verbose] >
00:00:09 #470 [Verbose] > inl sum_ seq =
00:00:09 #471 [Verbose] >     seq |> fold_ (+) 0
00:00:09 #472 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3025-2563-2bb3b4879707/main.spi
00:00:09 #473 [Verbose] >
00:00:09 #474 [Verbose] > ╭─[ 114.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #475 [Verbose] > │ ()                                                                           │
00:00:09 #476 [Verbose] > │                                                                              │
00:00:09 #477 [Verbose] > │                                                                              │
00:00:09 #478 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #479 [Verbose] >
00:00:09 #480 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #481 [Verbose] > // // test
00:00:09 #482 [Verbose] >
00:00:09 #483 [Verbose] > listm.init 10i32 id
00:00:09 #484 [Verbose] > |> from_list
00:00:09 #485 [Verbose] > |> fun f (n : i32) => f n
00:00:09 #486 [Verbose] > |> sum
00:00:09 #487 [Verbose] > |> _equal 45
00:00:09 #488 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3037-3715-302fbd58036e/main.spi
00:00:09 #489 [Verbose] >
00:00:09 #490 [Verbose] > ╭─[ 122.91ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #491 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #492 [Verbose] > │     let v0 : string = $"__expect / actual: %A{45} / expected: %A{45}"        │
00:00:09 #493 [Verbose] > │     ()                                                                       │
00:00:09 #494 [Verbose] > │ method0()                                                                    │
00:00:09 #495 [Verbose] > │                                                                              │
00:00:09 #496 [Verbose] > │                                                                              │
00:00:09 #497 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #498 [Verbose] >
00:00:09 #499 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #500 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #501 [Verbose] > │ ## to_list                                                                   │
00:00:09 #502 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #503 [Verbose] >
00:00:09 #504 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #505 [Verbose] > inl to_list seq =
00:00:09 #506 [Verbose] >     seq
00:00:09 #507 [Verbose] >     |> fold (fun acc x => x :: acc) [[]]
00:00:09 #508 [Verbose] >     |> listm.rev
00:00:09 #509 [Verbose] >
00:00:09 #510 [Verbose] > inl to_list_ seq =
00:00:09 #511 [Verbose] >     seq
00:00:09 #512 [Verbose] >     |> fold_ (fun acc x => x :: acc) [[]]
00:00:09 #513 [Verbose] >     |> listm.rev
00:00:09 #514 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3049-4954-4f5c6f03611d/main.spi
00:00:09 #515 [Verbose] >
00:00:09 #516 [Verbose] > ╭─[ 115.78ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #517 [Verbose] > │ ()                                                                           │
00:00:09 #518 [Verbose] > │                                                                              │
00:00:09 #519 [Verbose] > │                                                                              │
00:00:09 #520 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #521 [Verbose] >
00:00:09 #522 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #523 [Verbose] > // // test
00:00:09 #524 [Verbose] >
00:00:09 #525 [Verbose] > listm.init 10i32 id
00:00:09 #526 [Verbose] > |> from_list
00:00:09 #527 [Verbose] > |> fun f (n : i32) => f n
00:00:09 #528 [Verbose] > |> to_list
00:00:09 #529 [Verbose] > |> _equal (listm.init 10i32 id)
00:00:09 #530 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3061-6121-6d7e7f9e3b6e/main.spi
00:00:09 #531 [Verbose] >
00:00:09 #532 [Verbose] > ╭─[ 184.52ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #533 [Verbose] > │ type UH0 =                                                                   │
00:00:09 #534 [Verbose] > │     | UH0_0 of int32 * UH0                                                   │
00:00:09 #535 [Verbose] > │     | UH0_1                                                                  │
00:00:09 #536 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:09 #537 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:09 #538 [Verbose] > │     let v1 : UH0 = UH0_0(9, v0)                                              │
00:00:09 #539 [Verbose] > │     let v2 : UH0 = UH0_0(8, v1)                                              │
00:00:09 #540 [Verbose] > │     let v3 : UH0 = UH0_0(7, v2)                                              │
00:00:09 #541 [Verbose] > │     let v4 : UH0 = UH0_0(6, v3)                                              │
00:00:09 #542 [Verbose] > │     let v5 : UH0 = UH0_0(5, v4)                                              │
00:00:09 #543 [Verbose] > │     let v6 : UH0 = UH0_0(4, v5)                                              │
00:00:09 #544 [Verbose] > │     let v7 : UH0 = UH0_0(3, v6)                                              │
00:00:09 #545 [Verbose] > │     let v8 : UH0 = UH0_0(2, v7)                                              │
00:00:09 #546 [Verbose] > │     let v9 : UH0 = UH0_0(1, v8)                                              │
00:00:09 #547 [Verbose] > │     let v10 : UH0 = UH0_0(0, v9)                                             │
00:00:09 #548 [Verbose] > │     let v11 : UH0 = UH0_1                                                    │
00:00:09 #549 [Verbose] > │     let v12 : UH0 = UH0_0(9, v11)                                            │
00:00:09 #550 [Verbose] > │     let v13 : UH0 = UH0_0(8, v12)                                            │
00:00:09 #551 [Verbose] > │     let v14 : UH0 = UH0_0(7, v13)                                            │
00:00:09 #552 [Verbose] > │     let v15 : UH0 = UH0_0(6, v14)                                            │
00:00:09 #553 [Verbose] > │     let v16 : UH0 = UH0_0(5, v15)                                            │
00:00:09 #554 [Verbose] > │     let v17 : UH0 = UH0_0(4, v16)                                            │
00:00:09 #555 [Verbose] > │     let v18 : UH0 = UH0_0(3, v17)                                            │
00:00:09 #556 [Verbose] > │     let v19 : UH0 = UH0_0(2, v18)                                            │
00:00:09 #557 [Verbose] > │     let v20 : UH0 = UH0_0(1, v19)                                            │
00:00:09 #558 [Verbose] > │     let v21 : UH0 = UH0_0(0, v20)                                            │
00:00:09 #559 [Verbose] > │     let v22 : string = $"__expect / actual: %A{v10} / expected: %A{v21}"     │
00:00:09 #560 [Verbose] > │     ()                                                                       │
00:00:09 #561 [Verbose] > │ method0()                                                                    │
00:00:09 #562 [Verbose] > │                                                                              │
00:00:09 #563 [Verbose] > │                                                                              │
00:00:09 #564 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #565 [Verbose] >
00:00:09 #566 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #567 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #568 [Verbose] > │ ## from_array                                                                │
00:00:09 #569 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #570 [Verbose] >
00:00:09 #571 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #572 [Verbose] > inl from_array forall dim {number; int} el. (array : a dim el) : seq dim el =
00:00:09 #573 [Verbose] >     fun n =>
00:00:09 #574 [Verbose] >         if n >= length array
00:00:09 #575 [Verbose] >         then None
00:00:09 #576 [Verbose] >         else index array n |> Some
00:00:09 #577 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3079-7986-7fc3437b4907/main.spi
00:00:09 #578 [Verbose] >
00:00:09 #579 [Verbose] > ╭─[ 120.38ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #580 [Verbose] > │ ()                                                                           │
00:00:09 #581 [Verbose] > │                                                                              │
00:00:09 #582 [Verbose] > │                                                                              │
00:00:09 #583 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #584 [Verbose] >
00:00:09 #585 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #586 [Verbose] > // // test
00:00:09 #587 [Verbose] >
00:00:09 #588 [Verbose] > a ;[[ 1; 2; 3 ]]
00:00:09 #589 [Verbose] > |> from_array
00:00:09 #590 [Verbose] > |> try_item 1i32
00:00:09 #591 [Verbose] > |> _equal (Some 2i32)
00:00:09 #592 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3091-9194-98f3616e50fe/main.spi
00:00:10 #593 [Verbose] >
00:00:10 #594 [Verbose] > ╭─[ 285.34ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #595 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:10 #596 [Verbose] > │     | US0_0                                                                  │
00:00:10 #597 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:10 #598 [Verbose] > │ let rec method1 (v0 : (int32 [])) : (int32 []) =                             │
00:00:10 #599 [Verbose] > │     v0                                                                       │
00:00:10 #600 [Verbose] > │ and method0 () : unit =                                                      │
00:00:10 #601 [Verbose] > │     let v0 : (int32 []) = [|1; 2; 3|]                                        │
00:00:10 #602 [Verbose] > │     let v1 : (int32 []) = method1(v0)                                        │
00:00:10 #603 [Verbose] > │     let v2 : int32 = v1.Length                                               │
00:00:10 #604 [Verbose] > │     let v3 : bool = 1 >= v2                                                  │
00:00:10 #605 [Verbose] > │     let v7 : US0 =                                                           │
00:00:10 #606 [Verbose] > │         if v3 then                                                           │
00:00:10 #607 [Verbose] > │             US0_0                                                            │
00:00:10 #608 [Verbose] > │         else                                                                 │
00:00:10 #609 [Verbose] > │             let v5 : int32 = v1.[int 1]                                      │
00:00:10 #610 [Verbose] > │             US0_1(v5)                                                        │
00:00:10 #611 [Verbose] > │     let v8 : US0 = US0_1(2)                                                  │
00:00:10 #612 [Verbose] > │     let v9 : string = $"__expect / actual: %A{v7} / expected: %A{v8}"        │
00:00:10 #613 [Verbose] > │     let v13 : bool =                                                         │
00:00:10 #614 [Verbose] > │         match v7 with                                                        │
00:00:10 #615 [Verbose] > │         | US0_1(v11) -> (* Some *)                                           │
00:00:10 #616 [Verbose] > │             let v12 : bool = v11 = 2                                         │
00:00:10 #617 [Verbose] > │             v12                                                              │
00:00:10 #618 [Verbose] > │         | _ ->                                                               │
00:00:10 #619 [Verbose] > │             false                                                            │
00:00:10 #620 [Verbose] > │     let v14 : bool = v13 = false                                             │
00:00:10 #621 [Verbose] > │     if v14 then                                                              │
00:00:10 #622 [Verbose] > │         failwith<unit> v9                                                    │
00:00:10 #623 [Verbose] > │ method0()                                                                    │
00:00:10 #624 [Verbose] > │                                                                              │
00:00:10 #625 [Verbose] > │                                                                              │
00:00:10 #626 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #627 [Verbose] >
00:00:10 #628 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #629 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #630 [Verbose] > │ ## to_array                                                                  │
00:00:10 #631 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #632 [Verbose] >
00:00:10 #633 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #634 [Verbose] > inl to_array seq =
00:00:10 #635 [Verbose] >     inl ar = a ;[[]] |> mut
00:00:10 #636 [Verbose] >     ((), seq)
00:00:10 #637 [Verbose] >     ||> fold fun _ x =>
00:00:10 #638 [Verbose] >         ar <- *ar /@ a ;[[x]]
00:00:10 #639 [Verbose] >     *ar
00:00:10 #640 [Verbose] >
00:00:10 #641 [Verbose] > inl to_array_ seq =
00:00:10 #642 [Verbose] >     inl ar = a ;[[]] |> mut
00:00:10 #643 [Verbose] >     ((), seq)
00:00:10 #644 [Verbose] >     ||> fold_ fun _ x =>
00:00:10 #645 [Verbose] >         ar <- *ar /@ a ;[[x]]
00:00:10 #646 [Verbose] >     *ar
00:00:10 #647 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3120-2075-202a8fe0c3dc/main.spi
00:00:10 #648 [Verbose] >
00:00:10 #649 [Verbose] > ╭─[ 119.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #650 [Verbose] > │ ()                                                                           │
00:00:10 #651 [Verbose] > │                                                                              │
00:00:10 #652 [Verbose] > │                                                                              │
00:00:10 #653 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #654 [Verbose] >
00:00:10 #655 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #656 [Verbose] > // // test
00:00:10 #657 [Verbose] >
00:00:10 #658 [Verbose] > listm.init 10i32 id
00:00:10 #659 [Verbose] > |> from_list
00:00:10 #660 [Verbose] > |> fun (x : i32 -> _) => x
00:00:10 #661 [Verbose] > |> to_array
00:00:10 #662 [Verbose] > |> _equal (a ;[[ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 ]] : _ i32 _)
00:00:10 #663 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3132-3276-3e2601073e59/main.spi
00:00:10 #664 [Verbose] >
00:00:10 #665 [Verbose] > ╭─[ 431.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #666 [Verbose] > │ type Mut0 = {mutable l0 : (int32 [])}                                        │
00:00:10 #667 [Verbose] > │ and Mut1 = {mutable l0 : int32}                                              │
00:00:10 #668 [Verbose] > │ let rec method1 (v0 : (int32 [])) : (int32 []) =                             │
00:00:10 #669 [Verbose] > │     v0                                                                       │
00:00:10 #670 [Verbose] > │ and method2 (v0 : int32, v1 : Mut1) : bool =                                 │
00:00:10 #671 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:10 #672 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:10 #673 [Verbose] > │     v3                                                                       │
00:00:10 #674 [Verbose] > │ and method3 (v0 : (int32 []), v1 : (int32 []), v2 : int32) : bool =          │
00:00:10 #675 [Verbose] > │     let v3 : int32 = v0.Length                                               │
00:00:10 #676 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:00:10 #677 [Verbose] > │     if v4 then                                                               │
00:00:10 #678 [Verbose] > │         let v5 : int32 = v0.[int v2]                                         │
00:00:10 #679 [Verbose] > │         let v6 : int32 = v1.[int v2]                                         │
00:00:10 #680 [Verbose] > │         let v7 : bool = v5 = v6                                              │
00:00:10 #681 [Verbose] > │         if v7 then                                                           │
00:00:10 #682 [Verbose] > │             let v8 : int32 = v2 + 1                                          │
00:00:10 #683 [Verbose] > │             method3(v0, v1, v8)                                              │
00:00:10 #684 [Verbose] > │         else                                                                 │
00:00:10 #685 [Verbose] > │             false                                                            │
00:00:10 #686 [Verbose] > │     else                                                                     │
00:00:10 #687 [Verbose] > │         true                                                                 │
00:00:10 #688 [Verbose] > │ and method0 () : unit =                                                      │
00:00:10 #689 [Verbose] > │     let v0 : (int32 []) = [||]                                               │
00:00:10 #690 [Verbose] > │     let v1 : (int32 []) = method1(v0)                                        │
00:00:10 #691 [Verbose] > │     let v2 : Mut0 = {l0 = v1} : Mut0                                         │
00:00:10 #692 [Verbose] > │     let v3 : (int32 []) = v2.l0                                              │
00:00:10 #693 [Verbose] > │     let v4 : (int32 []) = [|0|]                                              │
00:00:10 #694 [Verbose] > │     let v5 : (int32 []) = method1(v4)                                        │
00:00:10 #695 [Verbose] > │     let v6 : int32 = v3.Length                                               │
00:00:10 #696 [Verbose] > │     let v7 : int32 = v5.Length                                               │
00:00:10 #697 [Verbose] > │     let v8 : int32 = v6 + v7                                                 │
00:00:10 #698 [Verbose] > │     let v9 : (int32 []) = Array.zeroCreate<int32> (v8)                       │
00:00:10 #699 [Verbose] > │     let v10 : Mut1 = {l0 = 0} : Mut1                                         │
00:00:10 #700 [Verbose] > │     while method2(v8, v10) do                                                │
00:00:10 #701 [Verbose] > │         let v12 : int32 = v10.l0                                             │
00:00:10 #702 [Verbose] > │         let v13 : bool = v12 < v6                                            │
00:00:10 #703 [Verbose] > │         let v17 : int32 =                                                    │
00:00:10 #704 [Verbose] > │             if v13 then                                                      │
00:00:10 #705 [Verbose] > │                 let v14 : int32 = v3.[int v12]                               │
00:00:10 #706 [Verbose] > │                 v14                                                          │
00:00:10 #707 [Verbose] > │             else                                                             │
00:00:10 #708 [Verbose] > │                 let v15 : int32 = v12 - v6                                   │
00:00:10 #709 [Verbose] > │                 let v16 : int32 = v5.[int v15]                               │
00:00:10 #710 [Verbose] > │                 v16                                                          │
00:00:10 #711 [Verbose] > │         v9.[int v12] <- v17                                                  │
00:00:10 #712 [Verbose] > │         let v18 : int32 = v12 + 1                                            │
00:00:10 #713 [Verbose] > │         v10.l0 <- v18                                                        │
00:00:10 #714 [Verbose] > │         ()                                                                   │
00:00:10 #715 [Verbose] > │     v2.l0 <- v9                                                              │
00:00:10 #716 [Verbose] > │     let v19 : (int32 []) = v2.l0                                             │
00:00:10 #717 [Verbose] > │     let v20 : (int32 []) = [|1|]                                             │
00:00:10 #718 [Verbose] > │     let v21 : (int32 []) = method1(v20)                                      │
00:00:10 #719 [Verbose] > │     let v22 : int32 = v19.Length                                             │
00:00:10 #720 [Verbose] > │     let v23 : int32 = v21.Length                                             │
00:00:10 #721 [Verbose] > │     let v24 : int32 = v22 + v23                                              │
00:00:10 #722 [Verbose] > │     let v25 : (int32 []) = Array.zeroCreate<int32> (v24)                     │
00:00:10 #723 [Verbose] > │     let v26 : Mut1 = {l0 = 0} : Mut1                                         │
00:00:10 #724 [Verbose] > │     while method2(v24, v26) do                                               │
00:00:10 #725 [Verbose] > │         let v28 : int32 = v26.l0                                             │
00:00:10 #726 [Verbose] > │         let v29 : bool = v28 < v22                                           │
00:00:10 #727 [Verbose] > │         let v33 : int32 =                                                    │
00:00:10 #728 [Verbose] > │             if v29 then                                                      │
00:00:10 #729 [Verbose] > │                 let v30 : int32 = v19.[int v28]                              │
00:00:10 #730 [Verbose] > │                 v30                                                          │
00:00:10 #731 [Verbose] > │             else                                                             │
00:00:10 #732 [Verbose] > │                 let v31 : int32 = v28 - v22                                  │
00:00:10 #733 [Verbose] > │                 let v32 : int32 = v21.[int v31]                              │
00:00:10 #734 [Verbose] > │                 v32                                                          │
00:00:10 #735 [Verbose] > │         v25.[int v28] <- v33                                                 │
00:00:10 #736 [Verbose] > │         let v34 : int32 = v28 + 1                                            │
00:00:10 #737 [Verbose] > │         v26.l0 <- v34                                                        │
00:00:10 #738 [Verbose] > │         ()                                                                   │
00:00:10 #739 [Verbose] > │     v2.l0 <- v25                                                             │
00:00:10 #740 [Verbose] > │     let v35 : (int32 []) = v2.l0                                             │
00:00:10 #741 [Verbose] > │     let v36 : (int32 []) = [|2|]                                             │
00:00:10 #742 [Verbose] > │     let v37 : (int32 []) = method1(v36)                                      │
00:00:10 #743 [Verbose] > │     let v38 : int32 = v35.Length                                             │
00:00:10 #744 [Verbose] > │     let v39 : int32 = v37.Length                                             │
00:00:10 #745 [Verbose] > │     let v40 : int32 = v38 + v39                                              │
00:00:10 #746 [Verbose] > │     let v41 : (int32 []) = Array.zeroCreate<int32> (v40)                     │
00:00:10 #747 [Verbose] > │     let v42 : Mut1 = {l0 = 0} : Mut1                                         │
00:00:10 #748 [Verbose] > │     while method2(v40, v42) do                                               │
00:00:10 #749 [Verbose] > │         let v44 : int32 = v42.l0                                             │
00:00:10 #750 [Verbose] > │         let v45 : bool = v44 < v38                                           │
00:00:10 #751 [Verbose] > │         let v49 : int32 =                                                    │
00:00:10 #752 [Verbose] > │             if v45 then                                                      │
00:00:10 #753 [Verbose] > │                 let v46 : int32 = v35.[int v44]                              │
00:00:10 #754 [Verbose] > │                 v46                                                          │
00:00:10 #755 [Verbose] > │             else                                                             │
00:00:10 #756 [Verbose] > │                 let v47 : int32 = v44 - v38                                  │
00:00:10 #757 [Verbose] > │                 let v48 : int32 = v37.[int v47]                              │
00:00:10 #758 [Verbose] > │                 v48                                                          │
00:00:10 #759 [Verbose] > │         v41.[int v44] <- v49                                                 │
00:00:10 #760 [Verbose] > │         let v50 : int32 = v44 + 1                                            │
00:00:10 #761 [Verbose] > │         v42.l0 <- v50                                                        │
00:00:10 #762 [Verbose] > │         ()                                                                   │
00:00:10 #763 [Verbose] > │     v2.l0 <- v41                                                             │
00:00:10 #764 [Verbose] > │     let v51 : (int32 []) = v2.l0                                             │
00:00:10 #765 [Verbose] > │     let v52 : (int32 []) = [|3|]                                             │
00:00:10 #766 [Verbose] > │     let v53 : (int32 []) = method1(v52)                                      │
00:00:10 #767 [Verbose] > │     let v54 : int32 = v51.Length                                             │
00:00:10 #768 [Verbose] > │     let v55 : int32 = v53.Length                                             │
00:00:10 #769 [Verbose] > │     let v56 : int32 = v54 + v55                                              │
00:00:10 #770 [Verbose] > │     let v57 : (int32 []) = Array.zeroCreate<int32> (v56)                     │
00:00:10 #771 [Verbose] > │     let v58 : Mut1 = {l0 = 0} : Mut1                                         │
00:00:10 #772 [Verbose] > │     while method2(v56, v58) do                                               │
00:00:10 #773 [Verbose] > │         let v60 : int32 = v58.l0                                             │
00:00:10 #774 [Verbose] > │         let v61 : bool = v60 < v54                                           │
00:00:10 #775 [Verbose] > │         let v65 : int32 =                                                    │
00:00:10 #776 [Verbose] > │             if v61 then                                                      │
00:00:10 #777 [Verbose] > │                 let v62 : int32 = v51.[int v60]                              │
00:00:10 #778 [Verbose] > │                 v62                                                          │
00:00:10 #779 [Verbose] > │             else                                                             │
00:00:10 #780 [Verbose] > │                 let v63 : int32 = v60 - v54                                  │
00:00:10 #781 [Verbose] > │                 let v64 : int32 = v53.[int v63]                              │
00:00:10 #782 [Verbose] > │                 v64                                                          │
00:00:10 #783 [Verbose] > │         v57.[int v60] <- v65                                                 │
00:00:10 #784 [Verbose] > │         let v66 : int32 = v60 + 1                                            │
00:00:10 #785 [Verbose] > │         v58.l0 <- v66                                                        │
00:00:10 #786 [Verbose] > │         ()                                                                   │
00:00:10 #787 [Verbose] > │     v2.l0 <- v57                                                             │
00:00:10 #788 [Verbose] > │     let v67 : (int32 []) = v2.l0                                             │
00:00:10 #789 [Verbose] > │     let v68 : (int32 []) = [|4|]                                             │
00:00:10 #790 [Verbose] > │     let v69 : (int32 []) = method1(v68)                                      │
00:00:10 #791 [Verbose] > │     let v70 : int32 = v67.Length                                             │
00:00:10 #792 [Verbose] > │     let v71 : int32 = v69.Length                                             │
00:00:10 #793 [Verbose] > │     let v72 : int32 = v70 + v71                                              │
00:00:10 #794 [Verbose] > │     let v73 : (int32 []) = Array.zeroCreate<int32> (v72)                     │
00:00:10 #795 [Verbose] > │     let v74 : Mut1 = {l0 = 0} : Mut1                                         │
00:00:10 #796 [Verbose] > │     while method2(v72, v74) do                                               │
00:00:10 #797 [Verbose] > │         let v76 : int32 = v74.l0                                             │
00:00:10 #798 [Verbose] > │         let v77 : bool = v76 < v70                                           │
00:00:10 #799 [Verbose] > │         let v81 : int32 =                                                    │
00:00:10 #800 [Verbose] > │             if v77 then                                                      │
00:00:10 #801 [Verbose] > │                 let v78 : int32 = v67.[int v76]                              │
00:00:10 #802 [Verbose] > │                 v78                                                          │
00:00:10 #803 [Verbose] > │             else                                                             │
00:00:10 #804 [Verbose] > │                 let v79 : int32 = v76 - v70                                  │
00:00:10 #805 [Verbose] > │                 let v80 : int32 = v69.[int v79]                              │
00:00:10 #806 [Verbose] > │                 v80                                                          │
00:00:10 #807 [Verbose] > │         v73.[int v76] <- v81                                                 │
00:00:10 #808 [Verbose] > │         let v82 : int32 = v76 + 1                                            │
00:00:10 #809 [Verbose] > │         v74.l0 <- v82                                                        │
00:00:10 #810 [Verbose] > │         ()                                                                   │
00:00:10 #811 [Verbose] > │     v2.l0 <- v73                                                             │
00:00:10 #812 [Verbose] > │     let v83 : (int32 []) = v2.l0                                             │
00:00:10 #813 [Verbose] > │     let v84 : (int32 []) = [|5|]                                             │
00:00:10 #814 [Verbose] > │     let v85 : (int32 []) = method1(v84)                                      │
00:00:10 #815 [Verbose] > │     let v86 : int32 = v83.Length                                             │
00:00:10 #816 [Verbose] > │     let v87 : int32 = v85.Length                                             │
00:00:10 #817 [Verbose] > │     let v88 : int32 = v86 + v87                                              │
00:00:10 #818 [Verbose] > │     let v89 : (int32 []) = Array.zeroCreate<int32> (v88)                     │
00:00:10 #819 [Verbose] > │     let v90 : Mut1 = {l0 = 0} : Mut1                                         │
00:00:10 #820 [Verbose] > │     while method2(v88, v90) do                                               │
00:00:10 #821 [Verbose] > │         let v92 : int32 = v90.l0                                             │
00:00:10 #822 [Verbose] > │         let v93 : bool = v92 < v86                                           │
00:00:10 #823 [Verbose] > │         let v97 : int32 =                                                    │
00:00:10 #824 [Verbose] > │             if v93 then                                                      │
00:00:10 #825 [Verbose] > │                 let v94 : int32 = v83.[int v92]                              │
00:00:10 #826 [Verbose] > │                 v94                                                          │
00:00:10 #827 [Verbose] > │             else                                                             │
00:00:10 #828 [Verbose] > │                 let v95 : int32 = v92 - v86                                  │
00:00:10 #829 [Verbose] > │                 let v96 : int32 = v85.[int v95]                              │
00:00:10 #830 [Verbose] > │                 v96                                                          │
00:00:10 #831 [Verbose] > │         v89.[int v92] <- v97                                                 │
00:00:10 #832 [Verbose] > │         let v98 : int32 = v92 + 1                                            │
00:00:10 #833 [Verbose] > │         v90.l0 <- v98                                                        │
00:00:10 #834 [Verbose] > │         ()                                                                   │
00:00:10 #835 [Verbose] > │     v2.l0 <- v89                                                             │
00:00:10 #836 [Verbose] > │     let v99 : (int32 []) = v2.l0                                             │
00:00:10 #837 [Verbose] > │     let v100 : (int32 []) = [|6|]                                            │
00:00:10 #838 [Verbose] > │     let v101 : (int32 []) = method1(v100)                                    │
00:00:10 #839 [Verbose] > │     let v102 : int32 = v99.Length                                            │
00:00:10 #840 [Verbose] > │     let v103 : int32 = v101.Length                                           │
00:00:10 #841 [Verbose] > │     let v104 : int32 = v102 + v103                                           │
00:00:10 #842 [Verbose] > │     let v105 : (int32 []) = Array.zeroCreate<int32> (v104)                   │
00:00:10 #843 [Verbose] > │     let v106 : Mut1 = {l0 = 0} : Mut1                                        │
00:00:10 #844 [Verbose] > │     while method2(v104, v106) do                                             │
00:00:10 #845 [Verbose] > │         let v108 : int32 = v106.l0                                           │
00:00:10 #846 [Verbose] > │         let v109 : bool = v108 < v102                                        │
00:00:10 #847 [Verbose] > │         let v113 : int32 =                                                   │
00:00:10 #848 [Verbose] > │             if v109 then                                                     │
00:00:10 #849 [Verbose] > │                 let v110 : int32 = v99.[int v108]                            │
00:00:10 #850 [Verbose] > │                 v110                                                         │
00:00:10 #851 [Verbose] > │             else                                                             │
00:00:10 #852 [Verbose] > │                 let v111 : int32 = v108 - v102                               │
00:00:10 #853 [Verbose] > │                 let v112 : int32 = v101.[int v111]                           │
00:00:10 #854 [Verbose] > │                 v112                                                         │
00:00:10 #855 [Verbose] > │         v105.[int v108] <- v113                                              │
00:00:10 #856 [Verbose] > │         let v114 : int32 = v108 + 1                                          │
00:00:10 #857 [Verbose] > │         v106.l0 <- v114                                                      │
00:00:10 #858 [Verbose] > │         ()                                                                   │
00:00:10 #859 [Verbose] > │     v2.l0 <- v105                                                            │
00:00:10 #860 [Verbose] > │     let v115 : (int32 []) = v2.l0                                            │
00:00:10 #861 [Verbose] > │     let v116 : (int32 []) = [|7|]                                            │
00:00:10 #862 [Verbose] > │     let v117 : (int32 []) = method1(v116)                                    │
00:00:10 #863 [Verbose] > │     let v118 : int32 = v115.Length                                           │
00:00:10 #864 [Verbose] > │     let v119 : int32 = v117.Length                                           │
00:00:10 #865 [Verbose] > │     let v120 : int32 = v118 + v119                                           │
00:00:10 #866 [Verbose] > │     let v121 : (int32 []) = Array.zeroCreate<int32> (v120)                   │
00:00:10 #867 [Verbose] > │     let v122 : Mut1 = {l0 = 0} : Mut1                                        │
00:00:10 #868 [Verbose] > │     while method2(v120, v122) do                                             │
00:00:10 #869 [Verbose] > │         let v124 : int32 = v122.l0                                           │
00:00:10 #870 [Verbose] > │         let v125 : bool = v124 < v118                                        │
00:00:10 #871 [Verbose] > │         let v129 : int32 =                                                   │
00:00:10 #872 [Verbose] > │             if v125 then                                                     │
00:00:10 #873 [Verbose] > │                 let v126 : int32 = v115.[int v124]                           │
00:00:10 #874 [Verbose] > │                 v126                                                         │
00:00:10 #875 [Verbose] > │             else                                                             │
00:00:10 #876 [Verbose] > │                 let v127 : int32 = v124 - v118                               │
00:00:10 #877 [Verbose] > │                 let v128 : int32 = v117.[int v127]                           │
00:00:10 #878 [Verbose] > │                 v128                                                         │
00:00:10 #879 [Verbose] > │         v121.[int v124] <- v129                                              │
00:00:10 #880 [Verbose] > │         let v130 : int32 = v124 + 1                                          │
00:00:10 #881 [Verbose] > │         v122.l0 <- v130                                                      │
00:00:10 #882 [Verbose] > │         ()                                                                   │
00:00:10 #883 [Verbose] > │     v2.l0 <- v121                                                            │
00:00:10 #884 [Verbose] > │     let v131 : (int32 []) = v2.l0                                            │
00:00:10 #885 [Verbose] > │     let v132 : (int32 []) = [|8|]                                            │
00:00:10 #886 [Verbose] > │     let v133 : (int32 []) = method1(v132)                                    │
00:00:10 #887 [Verbose] > │     let v134 : int32 = v131.Length                                           │
00:00:10 #888 [Verbose] > │     let v135 : int32 = v133.Length                                           │
00:00:10 #889 [Verbose] > │     let v136 : int32 = v134 + v135                                           │
00:00:10 #890 [Verbose] > │     let v137 : (int32 []) = Array.zeroCreate<int32> (v136)                   │
00:00:10 #891 [Verbose] > │     let v138 : Mut1 = {l0 = 0} : Mut1                                        │
00:00:10 #892 [Verbose] > │     while method2(v136, v138) do                                             │
00:00:10 #893 [Verbose] > │         let v140 : int32 = v138.l0                                           │
00:00:10 #894 [Verbose] > │         let v141 : bool = v140 < v134                                        │
00:00:10 #895 [Verbose] > │         let v145 : int32 =                                                   │
00:00:10 #896 [Verbose] > │             if v141 then                                                     │
00:00:10 #897 [Verbose] > │                 let v142 : int32 = v131.[int v140]                           │
00:00:10 #898 [Verbose] > │                 v142                                                         │
00:00:10 #899 [Verbose] > │             else                                                             │
00:00:10 #900 [Verbose] > │                 let v143 : int32 = v140 - v134                               │
00:00:10 #901 [Verbose] > │                 let v144 : int32 = v133.[int v143]                           │
00:00:10 #902 [Verbose] > │                 v144                                                         │
00:00:10 #903 [Verbose] > │         v137.[int v140] <- v145                                              │
00:00:10 #904 [Verbose] > │         let v146 : int32 = v140 + 1                                          │
00:00:10 #905 [Verbose] > │         v138.l0 <- v146                                                      │
00:00:10 #906 [Verbose] > │         ()                                                                   │
00:00:10 #907 [Verbose] > │     v2.l0 <- v137                                                            │
00:00:10 #908 [Verbose] > │     let v147 : (int32 []) = v2.l0                                            │
00:00:10 #909 [Verbose] > │     let v148 : (int32 []) = [|9|]                                            │
00:00:10 #910 [Verbose] > │     let v149 : (int32 []) = method1(v148)                                    │
00:00:10 #911 [Verbose] > │     let v150 : int32 = v147.Length                                           │
00:00:10 #912 [Verbose] > │     let v151 : int32 = v149.Length                                           │
00:00:10 #913 [Verbose] > │     let v152 : int32 = v150 + v151                                           │
00:00:10 #914 [Verbose] > │     let v153 : (int32 []) = Array.zeroCreate<int32> (v152)                   │
00:00:10 #915 [Verbose] > │     let v154 : Mut1 = {l0 = 0} : Mut1                                        │
00:00:10 #916 [Verbose] > │     while method2(v152, v154) do                                             │
00:00:10 #917 [Verbose] > │         let v156 : int32 = v154.l0                                           │
00:00:10 #918 [Verbose] > │         let v157 : bool = v156 < v150                                        │
00:00:10 #919 [Verbose] > │         let v161 : int32 =                                                   │
00:00:10 #920 [Verbose] > │             if v157 then                                                     │
00:00:10 #921 [Verbose] > │                 let v158 : int32 = v147.[int v156]                           │
00:00:10 #922 [Verbose] > │                 v158                                                         │
00:00:10 #923 [Verbose] > │             else                                                             │
00:00:10 #924 [Verbose] > │                 let v159 : int32 = v156 - v150                               │
00:00:10 #925 [Verbose] > │                 let v160 : int32 = v149.[int v159]                           │
00:00:10 #926 [Verbose] > │                 v160                                                         │
00:00:10 #927 [Verbose] > │         v153.[int v156] <- v161                                              │
00:00:10 #928 [Verbose] > │         let v162 : int32 = v156 + 1                                          │
00:00:10 #929 [Verbose] > │         v154.l0 <- v162                                                      │
00:00:10 #930 [Verbose] > │         ()                                                                   │
00:00:10 #931 [Verbose] > │     v2.l0 <- v153                                                            │
00:00:10 #932 [Verbose] > │     let v163 : (int32 []) = v2.l0                                            │
00:00:10 #933 [Verbose] > │     let v164 : (int32 []) = [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|]                 │
00:00:10 #934 [Verbose] > │     let v165 : (int32 []) = method1(v164)                                    │
00:00:10 #935 [Verbose] > │     let v166 : string = $"__expect / actual: %A{v163} / expected: %A{v165}"  │
00:00:10 #936 [Verbose] > │     let v167 : int32 = v163.Length                                           │
00:00:10 #937 [Verbose] > │     let v168 : int32 = v165.Length                                           │
00:00:10 #938 [Verbose] > │     let v169 : bool = v167 = v168                                            │
00:00:10 #939 [Verbose] > │     let v170 : bool = v169 <> true                                           │
00:00:10 #940 [Verbose] > │     let v173 : bool =                                                        │
00:00:10 #941 [Verbose] > │         if v170 then                                                         │
00:00:10 #942 [Verbose] > │             false                                                            │
00:00:10 #943 [Verbose] > │         else                                                                 │
00:00:10 #944 [Verbose] > │             let v171 : int32 = 0                                             │
00:00:10 #945 [Verbose] > │             method3(v163, v165, v171)                                        │
00:00:10 #946 [Verbose] > │     let v174 : bool = v173 = false                                           │
00:00:10 #947 [Verbose] > │     if v174 then                                                             │
00:00:10 #948 [Verbose] > │         failwith<unit> v166                                                  │
00:00:10 #949 [Verbose] > │ method0()                                                                    │
00:00:10 #950 [Verbose] > │                                                                              │
00:00:10 #951 [Verbose] > │                                                                              │
00:00:10 #952 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #953 [Verbose] >
00:00:10 #954 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:10 #955 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:10 #956 [Verbose] > │ ## take_while                                                                │
00:00:10 #957 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #958 [Verbose] >
00:00:10 #959 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #960 [Verbose] > inl take_while cond seq =
00:00:10 #961 [Verbose] >     inl rec loop acc i =
00:00:10 #962 [Verbose] >         match seq i with
00:00:10 #963 [Verbose] >         | Some st when cond st i => loop (st :: acc) (i + 1)
00:00:10 #964 [Verbose] >         | _ => acc |> listm.rev
00:00:10 #965 [Verbose] >     loop [[]] 0
00:00:10 #966 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3179-7906-7e3fe43548ee/main.spi
00:00:10 #967 [Verbose] >
00:00:10 #968 [Verbose] > ╭─[ 135.55ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #969 [Verbose] > │ ()                                                                           │
00:00:10 #970 [Verbose] > │                                                                              │
00:00:10 #971 [Verbose] > │                                                                              │
00:00:10 #972 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #973 [Verbose] >
00:00:10 #974 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #975 [Verbose] > // // test
00:00:10 #976 [Verbose] >
00:00:10 #977 [Verbose] > listm.init 10i32 id
00:00:10 #978 [Verbose] > |> from_list
00:00:10 #979 [Verbose] > |> take_while (fun n (_ : i32) => n < 5)
00:00:10 #980 [Verbose] > |> listm'.sum
00:00:10 #981 [Verbose] > |> _equal 10
00:00:10 #982 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3192-9237-92dfede8e63c/main.spi
00:00:10 #983 [Verbose] >
00:00:10 #984 [Verbose] > ╭─[ 138.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:10 #985 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:10 #986 [Verbose] > │     let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}"        │
00:00:10 #987 [Verbose] > │     ()                                                                       │
00:00:10 #988 [Verbose] > │ method0()                                                                    │
00:00:10 #989 [Verbose] > │                                                                              │
00:00:10 #990 [Verbose] > │                                                                              │
00:00:10 #991 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:10 #992 [Verbose] >
00:00:10 #993 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:10 #994 [Verbose] > // // test
00:00:10 #995 [Verbose] >
00:00:10 #996 [Verbose] > stream.new_finite_stream print_and_return 10i32
00:00:10 #997 [Verbose] > |> flip stream.try_item
00:00:10 #998 [Verbose] > |> take_while (fun n (_ : i32) => n < 5)
00:00:10 #999 [Verbose] > |> listm'.sum
00:00:10 #1000 [Verbose] > |> _equal 10
00:00:11 #1001 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3206-0629-03273f287820/main.spi
00:00:11 #1002 [Verbose] >
00:00:11 #1003 [Verbose] > ╭─[ 148.98ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1004 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:11 #1005 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:11 #1006 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:11 #1007 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:11 #1008 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:11 #1009 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:11 #1010 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:11 #1011 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:11 #1012 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:11 #1013 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:11 #1014 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:11 #1015 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:11 #1016 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:11 #1017 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:11 #1018 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:11 #1019 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:11 #1020 [Verbose] > │     printfn $"print_and_return / x: {5}"                                     │
00:00:11 #1021 [Verbose] > │     let v0 : string = $"__expect / actual: %A{10} / expected: %A{10}"        │
00:00:11 #1022 [Verbose] > │     ()                                                                       │
00:00:11 #1023 [Verbose] > │ method0()                                                                    │
00:00:11 #1024 [Verbose] > │                                                                              │
00:00:11 #1025 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:11 #1026 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1027 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1028 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1029 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1030 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1031 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:11 #1032 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1033 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1034 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:11 #1035 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:11 #1036 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1037 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1038 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:11 #1039 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:11 #1040 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:11 #1041 [Verbose] > │                                                                              │
00:00:11 #1042 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1043 [Verbose] >
00:00:11 #1044 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #1045 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #1046 [Verbose] > │ ## take_while_                                                               │
00:00:11 #1047 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1048 [Verbose] >
00:00:11 #1049 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1050 [Verbose] > inl take_while_ cond seq =
00:00:11 #1051 [Verbose] >     let rec loop acc i =
00:00:11 #1052 [Verbose] >         match seq i with
00:00:11 #1053 [Verbose] >         | Some st when cond st i => loop (st :: acc) (i + 1)
00:00:11 #1054 [Verbose] >         | _ => acc |> listm.rev
00:00:11 #1055 [Verbose] >     loop [[]] 0
00:00:11 #1056 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3221-2148-22a88ca34358/main.spi
00:00:11 #1057 [Verbose] >
00:00:11 #1058 [Verbose] > ╭─[ 125.01ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1059 [Verbose] > │ ()                                                                           │
00:00:11 #1060 [Verbose] > │                                                                              │
00:00:11 #1061 [Verbose] > │                                                                              │
00:00:11 #1062 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1063 [Verbose] >
00:00:11 #1064 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1065 [Verbose] > // // test
00:00:11 #1066 [Verbose] >
00:00:11 #1067 [Verbose] > stream.new_infinite_stream_ print_and_return
00:00:11 #1068 [Verbose] > |> flip stream.try_item
00:00:11 #1069 [Verbose] > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:00:11 #1070 [Verbose] > |> listm'.sum
00:00:11 #1071 [Verbose] > |> _equal 10
00:00:11 #1072 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3234-3400-3f86c8b64845/main.spi
00:00:11 #1073 [Verbose] >
00:00:11 #1074 [Verbose] > ╭─[ 234.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1075 [Verbose] > │ type UH0 =                                                                   │
00:00:11 #1076 [Verbose] > │     | UH0_0 of int32 * (unit -> UH0)                                         │
00:00:11 #1077 [Verbose] > │     | UH0_1                                                                  │
00:00:11 #1078 [Verbose] > │ and UH1 =                                                                    │
00:00:11 #1079 [Verbose] > │     | UH1_0 of int32 * UH1                                                   │
00:00:11 #1080 [Verbose] > │     | UH1_1                                                                  │
00:00:11 #1081 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:11 #1082 [Verbose] > │     | US0_0                                                                  │
00:00:11 #1083 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:11 #1084 [Verbose] > │ let rec closure0 (v0 : int32) () : UH0 =                                     │
00:00:11 #1085 [Verbose] > │     let v1 : int32 = v0 + 1                                                  │
00:00:11 #1086 [Verbose] > │     method1(v1)                                                              │
00:00:11 #1087 [Verbose] > │ and method1 (v0 : int32) : UH0 =                                             │
00:00:11 #1088 [Verbose] > │     printfn $"print_and_return / x: {v0}"                                    │
00:00:11 #1089 [Verbose] > │     let v1 : (unit -> UH0) = closure0(v0)                                    │
00:00:11 #1090 [Verbose] > │     UH0_0(v0, v1)                                                            │
00:00:11 #1091 [Verbose] > │ and method3 (v0 : int32, v1 : UH0) : US0 =                                   │
00:00:11 #1092 [Verbose] > │     match v1 with                                                            │
00:00:11 #1093 [Verbose] > │     | UH0_0(v2, v3) -> (* StreamCons *)                                      │
00:00:11 #1094 [Verbose] > │         let v4 : bool = v0 <= 0                                              │
00:00:11 #1095 [Verbose] > │         if v4 then                                                           │
00:00:11 #1096 [Verbose] > │             US0_1(v2)                                                        │
00:00:11 #1097 [Verbose] > │         else                                                                 │
00:00:11 #1098 [Verbose] > │             let v6 : int32 = v0 - 1                                          │
00:00:11 #1099 [Verbose] > │             let v7 : UH0 = v3 ()                                             │
00:00:11 #1100 [Verbose] > │             method3(v6, v7)                                                  │
00:00:11 #1101 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:11 #1102 [Verbose] > │         US0_0                                                                │
00:00:11 #1103 [Verbose] > │ and method4 (v0 : UH1, v1 : UH1) : UH1 =                                     │
00:00:11 #1104 [Verbose] > │     match v0 with                                                            │
00:00:11 #1105 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:00:11 #1106 [Verbose] > │         let v4 : UH1 = UH1_0(v2, v1)                                         │
00:00:11 #1107 [Verbose] > │         method4(v3, v4)                                                      │
00:00:11 #1108 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:11 #1109 [Verbose] > │         v1                                                                   │
00:00:11 #1110 [Verbose] > │ and method2 (v0 : UH0, v1 : UH1, v2 : int32) : UH1 =                         │
00:00:11 #1111 [Verbose] > │     let v3 : US0 = method3(v2, v0)                                           │
00:00:11 #1112 [Verbose] > │     match v3 with                                                            │
00:00:11 #1113 [Verbose] > │     | US0_1(v4) -> (* Some *)                                                │
00:00:11 #1114 [Verbose] > │         let v5 : bool = v4 < 5                                               │
00:00:11 #1115 [Verbose] > │         if v5 then                                                           │
00:00:11 #1116 [Verbose] > │             let v6 : UH1 = UH1_0(v4, v1)                                     │
00:00:11 #1117 [Verbose] > │             let v7 : int32 = v2 + 1                                          │
00:00:11 #1118 [Verbose] > │             method2(v0, v6, v7)                                              │
00:00:11 #1119 [Verbose] > │         else                                                                 │
00:00:11 #1120 [Verbose] > │             let v9 : UH1 = UH1_1                                             │
00:00:11 #1121 [Verbose] > │             method4(v1, v9)                                                  │
00:00:11 #1122 [Verbose] > │     | _ ->                                                                   │
00:00:11 #1123 [Verbose] > │         let v12 : UH1 = UH1_1                                                │
00:00:11 #1124 [Verbose] > │         method4(v1, v12)                                                     │
00:00:11 #1125 [Verbose] > │ and method5 (v0 : UH1, v1 : int32) : int32 =                                 │
00:00:11 #1126 [Verbose] > │     match v0 with                                                            │
00:00:11 #1127 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:00:11 #1128 [Verbose] > │         let v4 : int32 = v1 + v2                                             │
00:00:11 #1129 [Verbose] > │         method5(v3, v4)                                                      │
00:00:11 #1130 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:11 #1131 [Verbose] > │         v1                                                                   │
00:00:11 #1132 [Verbose] > │ and method0 () : unit =                                                      │
00:00:11 #1133 [Verbose] > │     let v0 : int32 = 0                                                       │
00:00:11 #1134 [Verbose] > │     let v1 : UH0 = method1(v0)                                               │
00:00:11 #1135 [Verbose] > │     let v2 : UH1 = UH1_1                                                     │
00:00:11 #1136 [Verbose] > │     let v3 : int32 = 0                                                       │
00:00:11 #1137 [Verbose] > │     let v4 : UH1 = method2(v1, v2, v3)                                       │
00:00:11 #1138 [Verbose] > │     let v5 : int32 = 0                                                       │
00:00:11 #1139 [Verbose] > │     let v6 : int32 = method5(v4, v5)                                         │
00:00:11 #1140 [Verbose] > │     let v7 : string = $"__expect / actual: %A{v6} / expected: %A{10}"        │
00:00:11 #1141 [Verbose] > │     let v8 : bool = v6 = 10                                                  │
00:00:11 #1142 [Verbose] > │     let v9 : bool = v8 = false                                               │
00:00:11 #1143 [Verbose] > │     if v9 then                                                               │
00:00:11 #1144 [Verbose] > │         failwith<unit> v7                                                    │
00:00:11 #1145 [Verbose] > │ method0()                                                                    │
00:00:11 #1146 [Verbose] > │                                                                              │
00:00:11 #1147 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:11 #1148 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1149 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1150 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1151 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1152 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1153 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:11 #1154 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1155 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1156 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:11 #1157 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:11 #1158 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1159 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1160 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:11 #1161 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:11 #1162 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:11 #1163 [Verbose] > │                                                                              │
00:00:11 #1164 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1165 [Verbose] >
00:00:11 #1166 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1167 [Verbose] > // // test
00:00:11 #1168 [Verbose] >
00:00:11 #1169 [Verbose] > stream.new_infinite_stream_ print_and_return
00:00:11 #1170 [Verbose] > |> stream.memoize
00:00:11 #1171 [Verbose] > |> fun list =>
00:00:11 #1172 [Verbose] >     inl list = list ()
00:00:11 #1173 [Verbose] >     fun n =>
00:00:11 #1174 [Verbose] >         list |> stream.try_item n
00:00:11 #1175 [Verbose] > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:00:11 #1176 [Verbose] > |> listm'.sum
00:00:11 #1177 [Verbose] > |> _equal 10
00:00:11 #1178 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3258-5801-5573074e6389/main.spi
00:00:11 #1179 [Verbose] >
00:00:11 #1180 [Verbose] > ╭─[ 227.47ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1181 [Verbose] > │ type UH0 =                                                                   │
00:00:11 #1182 [Verbose] > │     | UH0_0 of int32 * (unit -> UH0)                                         │
00:00:11 #1183 [Verbose] > │     | UH0_1                                                                  │
00:00:11 #1184 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:11 #1185 [Verbose] > │     | US0_0 of f0_0 : UH0                                                    │
00:00:11 #1186 [Verbose] > │     | US0_1 of f1_0 : (unit -> UH0)                                          │
00:00:11 #1187 [Verbose] > │ and Mut0 = {mutable l0 : US0}                                                │
00:00:11 #1188 [Verbose] > │ and UH1 =                                                                    │
00:00:11 #1189 [Verbose] > │     | UH1_0 of int32 * UH1                                                   │
00:00:11 #1190 [Verbose] > │     | UH1_1                                                                  │
00:00:11 #1191 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:11 #1192 [Verbose] > │     | US1_0                                                                  │
00:00:11 #1193 [Verbose] > │     | US1_1 of f1_0 : int32                                                  │
00:00:11 #1194 [Verbose] > │ let rec closure0 (v0 : int32) () : UH0 =                                     │
00:00:11 #1195 [Verbose] > │     let v1 : int32 = v0 + 1                                                  │
00:00:11 #1196 [Verbose] > │     method1(v1)                                                              │
00:00:11 #1197 [Verbose] > │ and method1 (v0 : int32) : UH0 =                                             │
00:00:11 #1198 [Verbose] > │     printfn $"print_and_return / x: {v0}"                                    │
00:00:11 #1199 [Verbose] > │     let v1 : (unit -> UH0) = closure0(v0)                                    │
00:00:11 #1200 [Verbose] > │     UH0_0(v0, v1)                                                            │
00:00:11 #1201 [Verbose] > │ and closure1 (v0 : UH0) () : UH0 =                                           │
00:00:11 #1202 [Verbose] > │     v0                                                                       │
00:00:11 #1203 [Verbose] > │ and closure2 (v0 : UH0, v1 : Mut0) () : UH0 =                                │
00:00:11 #1204 [Verbose] > │     let v2 : US0 = v1.l0                                                     │
00:00:11 #1205 [Verbose] > │     match v2 with                                                            │
00:00:11 #1206 [Verbose] > │     | US0_0(v3) -> (* Computed *)                                            │
00:00:11 #1207 [Verbose] > │         v3                                                                   │
00:00:11 #1208 [Verbose] > │     | US0_1(v4) -> (* NotComputed *)                                         │
00:00:11 #1209 [Verbose] > │         let v5 : UH0 = v4 ()                                                 │
00:00:11 #1210 [Verbose] > │         let v12 : UH0 =                                                      │
00:00:11 #1211 [Verbose] > │             match v5 with                                                    │
00:00:11 #1212 [Verbose] > │             | UH0_0(v7, v8) -> (* StreamCons *)                              │
00:00:11 #1213 [Verbose] > │                 let v9 : (unit -> UH0) = method2(v0, v8)                     │
00:00:11 #1214 [Verbose] > │                 UH0_0(v7, v9)                                                │
00:00:11 #1215 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:11 #1216 [Verbose] > │                 UH0_1                                                        │
00:00:11 #1217 [Verbose] > │         let v13 : US0 = US0_0(v12)                                           │
00:00:11 #1218 [Verbose] > │         v1.l0 <- v13                                                         │
00:00:11 #1219 [Verbose] > │         v12                                                                  │
00:00:11 #1220 [Verbose] > │ and method2 (v0 : UH0, v1 : (unit -> UH0)) : (unit -> UH0) =                 │
00:00:11 #1221 [Verbose] > │     let v2 : US0 = US0_1(v1)                                                 │
00:00:11 #1222 [Verbose] > │     let v3 : Mut0 = {l0 = v2} : Mut0                                         │
00:00:11 #1223 [Verbose] > │     closure2(v0, v3)                                                         │
00:00:11 #1224 [Verbose] > │ and method4 (v0 : int32, v1 : UH0) : US1 =                                   │
00:00:11 #1225 [Verbose] > │     match v1 with                                                            │
00:00:11 #1226 [Verbose] > │     | UH0_0(v2, v3) -> (* StreamCons *)                                      │
00:00:11 #1227 [Verbose] > │         let v4 : bool = v0 <= 0                                              │
00:00:11 #1228 [Verbose] > │         if v4 then                                                           │
00:00:11 #1229 [Verbose] > │             US1_1(v2)                                                        │
00:00:11 #1230 [Verbose] > │         else                                                                 │
00:00:11 #1231 [Verbose] > │             let v6 : int32 = v0 - 1                                          │
00:00:11 #1232 [Verbose] > │             let v7 : UH0 = v3 ()                                             │
00:00:11 #1233 [Verbose] > │             method4(v6, v7)                                                  │
00:00:11 #1234 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:11 #1235 [Verbose] > │         US1_0                                                                │
00:00:11 #1236 [Verbose] > │ and method5 (v0 : UH1, v1 : UH1) : UH1 =                                     │
00:00:11 #1237 [Verbose] > │     match v0 with                                                            │
00:00:11 #1238 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:00:11 #1239 [Verbose] > │         let v4 : UH1 = UH1_0(v2, v1)                                         │
00:00:11 #1240 [Verbose] > │         method5(v3, v4)                                                      │
00:00:11 #1241 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:11 #1242 [Verbose] > │         v1                                                                   │
00:00:11 #1243 [Verbose] > │ and method3 (v0 : UH0, v1 : UH1, v2 : int32) : UH1 =                         │
00:00:11 #1244 [Verbose] > │     let v3 : US1 = method4(v2, v0)                                           │
00:00:11 #1245 [Verbose] > │     match v3 with                                                            │
00:00:11 #1246 [Verbose] > │     | US1_1(v4) -> (* Some *)                                                │
00:00:11 #1247 [Verbose] > │         let v5 : bool = v4 < 5                                               │
00:00:11 #1248 [Verbose] > │         if v5 then                                                           │
00:00:11 #1249 [Verbose] > │             let v6 : UH1 = UH1_0(v4, v1)                                     │
00:00:11 #1250 [Verbose] > │             let v7 : int32 = v2 + 1                                          │
00:00:11 #1251 [Verbose] > │             method3(v0, v6, v7)                                              │
00:00:11 #1252 [Verbose] > │         else                                                                 │
00:00:11 #1253 [Verbose] > │             let v9 : UH1 = UH1_1                                             │
00:00:11 #1254 [Verbose] > │             method5(v1, v9)                                                  │
00:00:11 #1255 [Verbose] > │     | _ ->                                                                   │
00:00:11 #1256 [Verbose] > │         let v12 : UH1 = UH1_1                                                │
00:00:11 #1257 [Verbose] > │         method5(v1, v12)                                                     │
00:00:11 #1258 [Verbose] > │ and method6 (v0 : UH1, v1 : int32) : int32 =                                 │
00:00:11 #1259 [Verbose] > │     match v0 with                                                            │
00:00:11 #1260 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:00:11 #1261 [Verbose] > │         let v4 : int32 = v1 + v2                                             │
00:00:11 #1262 [Verbose] > │         method6(v3, v4)                                                      │
00:00:11 #1263 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:11 #1264 [Verbose] > │         v1                                                                   │
00:00:11 #1265 [Verbose] > │ and method0 () : unit =                                                      │
00:00:11 #1266 [Verbose] > │     let v0 : int32 = 0                                                       │
00:00:11 #1267 [Verbose] > │     let v1 : UH0 = method1(v0)                                               │
00:00:11 #1268 [Verbose] > │     let v2 : (unit -> UH0) = closure1(v1)                                    │
00:00:11 #1269 [Verbose] > │     let v3 : (unit -> UH0) = method2(v1, v2)                                 │
00:00:11 #1270 [Verbose] > │     let v4 : UH0 = v3 ()                                                     │
00:00:11 #1271 [Verbose] > │     let v5 : UH1 = UH1_1                                                     │
00:00:11 #1272 [Verbose] > │     let v6 : int32 = 0                                                       │
00:00:11 #1273 [Verbose] > │     let v7 : UH1 = method3(v4, v5, v6)                                       │
00:00:11 #1274 [Verbose] > │     let v8 : int32 = 0                                                       │
00:00:11 #1275 [Verbose] > │     let v9 : int32 = method6(v7, v8)                                         │
00:00:11 #1276 [Verbose] > │     let v10 : string = $"__expect / actual: %A{v9} / expected: %A{10}"       │
00:00:11 #1277 [Verbose] > │     let v11 : bool = v9 = 10                                                 │
00:00:11 #1278 [Verbose] > │     let v12 : bool = v11 = false                                             │
00:00:11 #1279 [Verbose] > │     if v12 then                                                              │
00:00:11 #1280 [Verbose] > │         failwith<unit> v10                                                   │
00:00:11 #1281 [Verbose] > │ method0()                                                                    │
00:00:11 #1282 [Verbose] > │                                                                              │
00:00:11 #1283 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:11 #1284 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:11 #1285 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:11 #1286 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:11 #1287 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:11 #1288 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:11 #1289 [Verbose] > │                                                                              │
00:00:11 #1290 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #1291 [Verbose] >
00:00:11 #1292 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #1293 [Verbose] > // // test
00:00:11 #1294 [Verbose] >
00:00:11 #1295 [Verbose] > stream.new_finite_stream print_and_return 10i32
00:00:11 #1296 [Verbose] > |> stream.memoize
00:00:11 #1297 [Verbose] > |> fun list =>
00:00:11 #1298 [Verbose] >     inl list = list ()
00:00:11 #1299 [Verbose] >     fun n =>
00:00:11 #1300 [Verbose] >         list |> stream.try_item n
00:00:11 #1301 [Verbose] > |> take_while_ (fun n (_ : i32) => n < 5)
00:00:11 #1302 [Verbose] > |> listm'.sum
00:00:11 #1303 [Verbose] > |> _equal 10
00:00:11 #1304 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3282-8256-881499b00956/main.spi
00:00:11 #1305 [Verbose] >
00:00:11 #1306 [Verbose] > ╭─[ 242.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #1307 [Verbose] > │ type UH0 =                                                                   │
00:00:11 #1308 [Verbose] > │     | UH0_0 of int32 * (unit -> UH0)                                         │
00:00:11 #1309 [Verbose] > │     | UH0_1                                                                  │
00:00:11 #1310 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:11 #1311 [Verbose] > │     | US0_0 of f0_0 : UH0                                                    │
00:00:11 #1312 [Verbose] > │     | US0_1 of f1_0 : (unit -> UH0)                                          │
00:00:11 #1313 [Verbose] > │ and Mut0 = {mutable l0 : US0}                                                │
00:00:11 #1314 [Verbose] > │ and UH1 =                                                                    │
00:00:11 #1315 [Verbose] > │     | UH1_0 of int32 * UH1                                                   │
00:00:11 #1316 [Verbose] > │     | UH1_1                                                                  │
00:00:11 #1317 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:11 #1318 [Verbose] > │     | US1_0                                                                  │
00:00:11 #1319 [Verbose] > │     | US1_1 of f1_0 : int32                                                  │
00:00:11 #1320 [Verbose] > │ let rec closure10 () () : UH0 =                                              │
00:00:11 #1321 [Verbose] > │     UH0_1                                                                    │
00:00:11 #1322 [Verbose] > │ and closure9 () () : UH0 =                                                   │
00:00:11 #1323 [Verbose] > │     printfn $"print_and_return / x: {9}"                                     │
00:00:11 #1324 [Verbose] > │     let v0 : (unit -> UH0) = closure10()                                     │
00:00:11 #1325 [Verbose] > │     UH0_0(9, v0)                                                             │
00:00:11 #1326 [Verbose] > │ and closure8 () () : UH0 =                                                   │
00:00:11 #1327 [Verbose] > │     printfn $"print_and_return / x: {8}"                                     │
00:00:11 #1328 [Verbose] > │     let v0 : (unit -> UH0) = closure9()                                      │
00:00:11 #1329 [Verbose] > │     UH0_0(8, v0)                                                             │
00:00:11 #1330 [Verbose] > │ and closure7 () () : UH0 =                                                   │
00:00:11 #1331 [Verbose] > │     printfn $"print_and_return / x: {7}"                                     │
00:00:11 #1332 [Verbose] > │     let v0 : (unit -> UH0) = closure8()                                      │
00:00:11 #1333 [Verbose] > │     UH0_0(7, v0)                                                             │
00:00:11 #1334 [Verbose] > │ and closure6 () () : UH0 =                                                   │
00:00:11 #1335 [Verbose] > │     printfn $"print_and_return / x: {6}"                                     │
00:00:11 #1336 [Verbose] > │     let v0 : (unit -> UH0) = closure7()                                      │
00:00:11 #1337 [Verbose] > │     UH0_0(6, v0)                                                             │
00:00:11 #1338 [Verbose] > │ and closure5 () () : UH0 =                                                   │
00:00:11 #1339 [Verbose] > │     printfn $"print_and_return / x: {5}"                                     │
00:00:11 #1340 [Verbose] > │     let v0 : (unit -> UH0) = closure6()                                      │
00:00:11 #1341 [Verbose] > │     UH0_0(5, v0)                                                             │
00:00:11 #1342 [Verbose] > │ and closure4 () () : UH0 =                                                   │
00:00:11 #1343 [Verbose] > │     printfn $"print_and_return / x: {4}"                                     │
00:00:11 #1344 [Verbose] > │     let v0 : (unit -> UH0) = closure5()                                      │
00:00:11 #1345 [Verbose] > │     UH0_0(4, v0)                                                             │
00:00:12 #1346 [Verbose] > │ and closure3 () () : UH0 =                                                   │
00:00:12 #1347 [Verbose] > │     printfn $"print_and_return / x: {3}"                                     │
00:00:12 #1348 [Verbose] > │     let v0 : (unit -> UH0) = closure4()                                      │
00:00:12 #1349 [Verbose] > │     UH0_0(3, v0)                                                             │
00:00:12 #1350 [Verbose] > │ and closure2 () () : UH0 =                                                   │
00:00:12 #1351 [Verbose] > │     printfn $"print_and_return / x: {2}"                                     │
00:00:12 #1352 [Verbose] > │     let v0 : (unit -> UH0) = closure3()                                      │
00:00:12 #1353 [Verbose] > │     UH0_0(2, v0)                                                             │
00:00:12 #1354 [Verbose] > │ and closure1 () () : UH0 =                                                   │
00:00:12 #1355 [Verbose] > │     printfn $"print_and_return / x: {1}"                                     │
00:00:12 #1356 [Verbose] > │     let v0 : (unit -> UH0) = closure2()                                      │
00:00:12 #1357 [Verbose] > │     UH0_0(1, v0)                                                             │
00:00:12 #1358 [Verbose] > │ and closure0 () () : UH0 =                                                   │
00:00:12 #1359 [Verbose] > │     let v0 : (unit -> UH0) = closure1()                                      │
00:00:12 #1360 [Verbose] > │     UH0_0(0, v0)                                                             │
00:00:12 #1361 [Verbose] > │ and closure11 (v0 : Mut0) () : UH0 =                                         │
00:00:12 #1362 [Verbose] > │     let v1 : US0 = v0.l0                                                     │
00:00:12 #1363 [Verbose] > │     match v1 with                                                            │
00:00:12 #1364 [Verbose] > │     | US0_0(v2) -> (* Computed *)                                            │
00:00:12 #1365 [Verbose] > │         v2                                                                   │
00:00:12 #1366 [Verbose] > │     | US0_1(v3) -> (* NotComputed *)                                         │
00:00:12 #1367 [Verbose] > │         let v4 : UH0 = v3 ()                                                 │
00:00:12 #1368 [Verbose] > │         let v13 : UH0 =                                                      │
00:00:12 #1369 [Verbose] > │             match v4 with                                                    │
00:00:12 #1370 [Verbose] > │             | UH0_0(v6, v7) -> (* StreamCons *)                              │
00:00:12 #1371 [Verbose] > │                 let v8 : US0 = US0_1(v7)                                     │
00:00:12 #1372 [Verbose] > │                 let v9 : Mut0 = {l0 = v8} : Mut0                             │
00:00:12 #1373 [Verbose] > │                 let v10 : (unit -> UH0) = closure11(v9)                      │
00:00:12 #1374 [Verbose] > │                 UH0_0(v6, v10)                                               │
00:00:12 #1375 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:12 #1376 [Verbose] > │                 UH0_1                                                        │
00:00:12 #1377 [Verbose] > │         let v14 : US0 = US0_0(v13)                                           │
00:00:12 #1378 [Verbose] > │         v0.l0 <- v14                                                         │
00:00:12 #1379 [Verbose] > │         v13                                                                  │
00:00:12 #1380 [Verbose] > │ and method2 (v0 : int32, v1 : UH0) : US1 =                                   │
00:00:12 #1381 [Verbose] > │     match v1 with                                                            │
00:00:12 #1382 [Verbose] > │     | UH0_0(v2, v3) -> (* StreamCons *)                                      │
00:00:12 #1383 [Verbose] > │         let v4 : bool = v0 <= 0                                              │
00:00:12 #1384 [Verbose] > │         if v4 then                                                           │
00:00:12 #1385 [Verbose] > │             US1_1(v2)                                                        │
00:00:12 #1386 [Verbose] > │         else                                                                 │
00:00:12 #1387 [Verbose] > │             let v6 : int32 = v0 - 1                                          │
00:00:12 #1388 [Verbose] > │             let v7 : UH0 = v3 ()                                             │
00:00:12 #1389 [Verbose] > │             method2(v6, v7)                                                  │
00:00:12 #1390 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:12 #1391 [Verbose] > │         US1_0                                                                │
00:00:12 #1392 [Verbose] > │ and method3 (v0 : UH1, v1 : UH1) : UH1 =                                     │
00:00:12 #1393 [Verbose] > │     match v0 with                                                            │
00:00:12 #1394 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:00:12 #1395 [Verbose] > │         let v4 : UH1 = UH1_0(v2, v1)                                         │
00:00:12 #1396 [Verbose] > │         method3(v3, v4)                                                      │
00:00:12 #1397 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:12 #1398 [Verbose] > │         v1                                                                   │
00:00:12 #1399 [Verbose] > │ and method1 (v0 : UH0, v1 : UH1, v2 : int32) : UH1 =                         │
00:00:12 #1400 [Verbose] > │     let v3 : US1 = method2(v2, v0)                                           │
00:00:12 #1401 [Verbose] > │     match v3 with                                                            │
00:00:12 #1402 [Verbose] > │     | US1_1(v4) -> (* Some *)                                                │
00:00:12 #1403 [Verbose] > │         let v5 : bool = v4 < 5                                               │
00:00:12 #1404 [Verbose] > │         if v5 then                                                           │
00:00:12 #1405 [Verbose] > │             let v6 : UH1 = UH1_0(v4, v1)                                     │
00:00:12 #1406 [Verbose] > │             let v7 : int32 = v2 + 1                                          │
00:00:12 #1407 [Verbose] > │             method1(v0, v6, v7)                                              │
00:00:12 #1408 [Verbose] > │         else                                                                 │
00:00:12 #1409 [Verbose] > │             let v9 : UH1 = UH1_1                                             │
00:00:12 #1410 [Verbose] > │             method3(v1, v9)                                                  │
00:00:12 #1411 [Verbose] > │     | _ ->                                                                   │
00:00:12 #1412 [Verbose] > │         let v12 : UH1 = UH1_1                                                │
00:00:12 #1413 [Verbose] > │         method3(v1, v12)                                                     │
00:00:12 #1414 [Verbose] > │ and method4 (v0 : UH1, v1 : int32) : int32 =                                 │
00:00:12 #1415 [Verbose] > │     match v0 with                                                            │
00:00:12 #1416 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:00:12 #1417 [Verbose] > │         let v4 : int32 = v1 + v2                                             │
00:00:12 #1418 [Verbose] > │         method4(v3, v4)                                                      │
00:00:12 #1419 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:12 #1420 [Verbose] > │         v1                                                                   │
00:00:12 #1421 [Verbose] > │ and method0 () : unit =                                                      │
00:00:12 #1422 [Verbose] > │     printfn $"print_and_return / x: {0}"                                     │
00:00:12 #1423 [Verbose] > │     let v0 : (unit -> UH0) = closure0()                                      │
00:00:12 #1424 [Verbose] > │     let v1 : US0 = US0_1(v0)                                                 │
00:00:12 #1425 [Verbose] > │     let v2 : Mut0 = {l0 = v1} : Mut0                                         │
00:00:12 #1426 [Verbose] > │     let v3 : US0 = v2.l0                                                     │
00:00:12 #1427 [Verbose] > │     let v18 : UH0 =                                                          │
00:00:12 #1428 [Verbose] > │         match v3 with                                                        │
00:00:12 #1429 [Verbose] > │         | US0_0(v4) -> (* Computed *)                                        │
00:00:12 #1430 [Verbose] > │             v4                                                               │
00:00:12 #1431 [Verbose] > │         | US0_1(v5) -> (* NotComputed *)                                     │
00:00:12 #1432 [Verbose] > │             let v6 : UH0 = v5 ()                                             │
00:00:12 #1433 [Verbose] > │             let v15 : UH0 =                                                  │
00:00:12 #1434 [Verbose] > │                 match v6 with                                                │
00:00:12 #1435 [Verbose] > │                 | UH0_0(v8, v9) -> (* StreamCons *)                          │
00:00:12 #1436 [Verbose] > │                     let v10 : US0 = US0_1(v9)                                │
00:00:12 #1437 [Verbose] > │                     let v11 : Mut0 = {l0 = v10} : Mut0                       │
00:00:12 #1438 [Verbose] > │                     let v12 : (unit -> UH0) = closure11(v11)                 │
00:00:12 #1439 [Verbose] > │                     UH0_0(v8, v12)                                           │
00:00:12 #1440 [Verbose] > │                 | UH0_1 -> (* StreamNil *)                                   │
00:00:12 #1441 [Verbose] > │                     UH0_1                                                    │
00:00:12 #1442 [Verbose] > │             let v16 : US0 = US0_0(v15)                                       │
00:00:12 #1443 [Verbose] > │             v2.l0 <- v16                                                     │
00:00:12 #1444 [Verbose] > │             v15                                                              │
00:00:12 #1445 [Verbose] > │     let v19 : UH1 = UH1_1                                                    │
00:00:12 #1446 [Verbose] > │     let v20 : int32 = 0                                                      │
00:00:12 #1447 [Verbose] > │     let v21 : UH1 = method1(v18, v19, v20)                                   │
00:00:12 #1448 [Verbose] > │     let v22 : int32 = 0                                                      │
00:00:12 #1449 [Verbose] > │     let v23 : int32 = method4(v21, v22)                                      │
00:00:12 #1450 [Verbose] > │     let v24 : string = $"__expect / actual: %A{v23} / expected: %A{10}"      │
00:00:12 #1451 [Verbose] > │     let v25 : bool = v23 = 10                                                │
00:00:12 #1452 [Verbose] > │     let v26 : bool = v25 = false                                             │
00:00:12 #1453 [Verbose] > │     if v26 then                                                              │
00:00:12 #1454 [Verbose] > │         failwith<unit> v24                                                   │
00:00:12 #1455 [Verbose] > │ method0()                                                                    │
00:00:12 #1456 [Verbose] > │                                                                              │
00:00:12 #1457 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:12 #1458 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:12 #1459 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:12 #1460 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:12 #1461 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:12 #1462 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:12 #1463 [Verbose] > │                                                                              │
00:00:12 #1464 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1465 [Verbose] >
00:00:12 #1466 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1467 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1468 [Verbose] > │ ## memoize                                                                   │
00:00:12 #1469 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1470 [Verbose] >
00:00:12 #1471 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1472 [Verbose] > inl memoize seq =
00:00:12 #1473 [Verbose] >     inl state = mut [[]]
00:00:12 #1474 [Verbose] >     fun n =>
00:00:12 #1475 [Verbose] >         match *state |> listm'.try_find (fun (n', _) => n' = n) with
00:00:12 #1476 [Verbose] >         | Some (_, v) => v
00:00:12 #1477 [Verbose] >         | None =>
00:00:12 #1478 [Verbose] >             inl new_state = seq n
00:00:12 #1479 [Verbose] >             state <- (n, new_state) :: *state
00:00:12 #1480 [Verbose] >             new_state
00:00:12 #1481 [Verbose] >
00:00:12 #1482 [Verbose] > inl memoize_ seq =
00:00:12 #1483 [Verbose] >     inl state = mut [[]]
00:00:12 #1484 [Verbose] >     fun n =>
00:00:12 #1485 [Verbose] >         match *state |> listm'.try_find_ (fun (n', _) => n' = n) with
00:00:12 #1486 [Verbose] >         | Some (_, v) => v
00:00:12 #1487 [Verbose] >         | None =>
00:00:12 #1488 [Verbose] >             inl new_state = seq n
00:00:12 #1489 [Verbose] >             state <- (n, new_state) :: *state
00:00:12 #1490 [Verbose] >             new_state
00:00:12 #1491 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3309-0942-0128b45d5e65/main.spi
00:00:12 #1492 [Verbose] >
00:00:12 #1493 [Verbose] > ╭─[ 160.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1494 [Verbose] > │ ()                                                                           │
00:00:12 #1495 [Verbose] > │                                                                              │
00:00:12 #1496 [Verbose] > │                                                                              │
00:00:12 #1497 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1498 [Verbose] >
00:00:12 #1499 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1500 [Verbose] > // // test
00:00:12 #1501 [Verbose] >
00:00:12 #1502 [Verbose] > inl seq =
00:00:12 #1503 [Verbose] >     fun n =>
00:00:12 #1504 [Verbose] >         n |> print_and_return |> Some
00:00:12 #1505 [Verbose] >     |> memoize_
00:00:12 #1506 [Verbose] >
00:00:12 #1507 [Verbose] > seq
00:00:12 #1508 [Verbose] > |> take_while_ (fun n (_ : i32) => n < 5)
00:00:12 #1509 [Verbose] > |> listm'.sum
00:00:12 #1510 [Verbose] > |> _equal 10
00:00:12 #1511 [Verbose] >
00:00:12 #1512 [Verbose] > seq
00:00:12 #1513 [Verbose] > |> take_while_ (fun n _ => n < 5)
00:00:12 #1514 [Verbose] > |> listm'.sum
00:00:12 #1515 [Verbose] > |> _equal 10
00:00:12 #1516 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3325-2534-23f4217fbe6f/main.spi
00:00:12 #1517 [Verbose] >
00:00:12 #1518 [Verbose] > ╭─[ 248.00ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1519 [Verbose] > │ type [<Struct>] US0 =                                                        │
00:00:12 #1520 [Verbose] > │     | US0_0                                                                  │
00:00:12 #1521 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:00:12 #1522 [Verbose] > │ and UH0 =                                                                    │
00:00:12 #1523 [Verbose] > │     | UH0_0 of int32 * US0 * UH0                                             │
00:00:12 #1524 [Verbose] > │     | UH0_1                                                                  │
00:00:12 #1525 [Verbose] > │ and Mut0 = {mutable l0 : UH0}                                                │
00:00:12 #1526 [Verbose] > │ and UH1 =                                                                    │
00:00:12 #1527 [Verbose] > │     | UH1_0 of int32 * UH1                                                   │
00:00:12 #1528 [Verbose] > │     | UH1_1                                                                  │
00:00:12 #1529 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:12 #1530 [Verbose] > │     | US1_0                                                                  │
00:00:12 #1531 [Verbose] > │     | US1_1 of f1_0 : int32 * f1_1 : US0                                     │
00:00:12 #1532 [Verbose] > │ let rec method2 (v0 : int32, v1 : UH0) : US1 =                               │
00:00:12 #1533 [Verbose] > │     match v1 with                                                            │
00:00:12 #1534 [Verbose] > │     | UH0_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:12 #1535 [Verbose] > │         let v6 : bool = v3 = v0                                              │
00:00:12 #1536 [Verbose] > │         if v6 then                                                           │
00:00:12 #1537 [Verbose] > │             US1_1(v3, v4)                                                    │
00:00:12 #1538 [Verbose] > │         else                                                                 │
00:00:12 #1539 [Verbose] > │             method2(v0, v5)                                                  │
00:00:12 #1540 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:12 #1541 [Verbose] > │         US1_0                                                                │
00:00:12 #1542 [Verbose] > │ and method3 (v0 : UH1, v1 : UH1) : UH1 =                                     │
00:00:12 #1543 [Verbose] > │     match v0 with                                                            │
00:00:12 #1544 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:00:12 #1545 [Verbose] > │         let v4 : UH1 = UH1_0(v2, v1)                                         │
00:00:12 #1546 [Verbose] > │         method3(v3, v4)                                                      │
00:00:12 #1547 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:12 #1548 [Verbose] > │         v1                                                                   │
00:00:12 #1549 [Verbose] > │ and method1 (v0 : Mut0, v1 : UH1, v2 : int32) : UH1 =                        │
00:00:12 #1550 [Verbose] > │     let v3 : UH0 = v0.l0                                                     │
00:00:12 #1551 [Verbose] > │     let v4 : US1 = method2(v2, v3)                                           │
00:00:12 #1552 [Verbose] > │     let v12 : US0 =                                                          │
00:00:12 #1553 [Verbose] > │         match v4 with                                                        │
00:00:12 #1554 [Verbose] > │         | US1_0 -> (* None *)                                                │
00:00:12 #1555 [Verbose] > │             printfn $"print_and_return / x: {v2}"                            │
00:00:12 #1556 [Verbose] > │             let v7 : UH0 = v0.l0                                             │
00:00:12 #1557 [Verbose] > │             let v8 : US0 = US0_1(v2)                                         │
00:00:12 #1558 [Verbose] > │             let v9 : UH0 = UH0_0(v2, v8, v7)                                 │
00:00:12 #1559 [Verbose] > │             v0.l0 <- v9                                                      │
00:00:12 #1560 [Verbose] > │             US0_1(v2)                                                        │
00:00:12 #1561 [Verbose] > │         | US1_1(v5, v6) -> (* Some *)                                        │
00:00:12 #1562 [Verbose] > │             v6                                                               │
00:00:12 #1563 [Verbose] > │     match v12 with                                                           │
00:00:12 #1564 [Verbose] > │     | US0_1(v13) -> (* Some *)                                               │
00:00:12 #1565 [Verbose] > │         let v14 : bool = v13 < 5                                             │
00:00:12 #1566 [Verbose] > │         if v14 then                                                          │
00:00:12 #1567 [Verbose] > │             let v15 : UH1 = UH1_0(v13, v1)                                   │
00:00:12 #1568 [Verbose] > │             let v16 : int32 = v2 + 1                                         │
00:00:12 #1569 [Verbose] > │             method1(v0, v15, v16)                                            │
00:00:12 #1570 [Verbose] > │         else                                                                 │
00:00:12 #1571 [Verbose] > │             let v18 : UH1 = UH1_1                                            │
00:00:12 #1572 [Verbose] > │             method3(v1, v18)                                                 │
00:00:12 #1573 [Verbose] > │     | _ ->                                                                   │
00:00:12 #1574 [Verbose] > │         let v21 : UH1 = UH1_1                                                │
00:00:12 #1575 [Verbose] > │         method3(v1, v21)                                                     │
00:00:12 #1576 [Verbose] > │ and method4 (v0 : UH1, v1 : int32) : int32 =                                 │
00:00:12 #1577 [Verbose] > │     match v0 with                                                            │
00:00:12 #1578 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:00:12 #1579 [Verbose] > │         let v4 : int32 = v1 + v2                                             │
00:00:12 #1580 [Verbose] > │         method4(v3, v4)                                                      │
00:00:12 #1581 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:12 #1582 [Verbose] > │         v1                                                                   │
00:00:12 #1583 [Verbose] > │ and method5 (v0 : Mut0, v1 : UH1, v2 : int32) : UH1 =                        │
00:00:12 #1584 [Verbose] > │     let v3 : UH0 = v0.l0                                                     │
00:00:12 #1585 [Verbose] > │     let v4 : US1 = method2(v2, v3)                                           │
00:00:12 #1586 [Verbose] > │     let v12 : US0 =                                                          │
00:00:12 #1587 [Verbose] > │         match v4 with                                                        │
00:00:12 #1588 [Verbose] > │         | US1_0 -> (* None *)                                                │
00:00:12 #1589 [Verbose] > │             printfn $"print_and_return / x: {v2}"                            │
00:00:12 #1590 [Verbose] > │             let v7 : UH0 = v0.l0                                             │
00:00:12 #1591 [Verbose] > │             let v8 : US0 = US0_1(v2)                                         │
00:00:12 #1592 [Verbose] > │             let v9 : UH0 = UH0_0(v2, v8, v7)                                 │
00:00:12 #1593 [Verbose] > │             v0.l0 <- v9                                                      │
00:00:12 #1594 [Verbose] > │             US0_1(v2)                                                        │
00:00:12 #1595 [Verbose] > │         | US1_1(v5, v6) -> (* Some *)                                        │
00:00:12 #1596 [Verbose] > │             v6                                                               │
00:00:12 #1597 [Verbose] > │     match v12 with                                                           │
00:00:12 #1598 [Verbose] > │     | US0_1(v13) -> (* Some *)                                               │
00:00:12 #1599 [Verbose] > │         let v14 : bool = v13 < 5                                             │
00:00:12 #1600 [Verbose] > │         if v14 then                                                          │
00:00:12 #1601 [Verbose] > │             let v15 : UH1 = UH1_0(v13, v1)                                   │
00:00:12 #1602 [Verbose] > │             let v16 : int32 = v2 + 1                                         │
00:00:12 #1603 [Verbose] > │             method5(v0, v15, v16)                                            │
00:00:12 #1604 [Verbose] > │         else                                                                 │
00:00:12 #1605 [Verbose] > │             let v18 : UH1 = UH1_1                                            │
00:00:12 #1606 [Verbose] > │             method3(v1, v18)                                                 │
00:00:12 #1607 [Verbose] > │     | _ ->                                                                   │
00:00:12 #1608 [Verbose] > │         let v21 : UH1 = UH1_1                                                │
00:00:12 #1609 [Verbose] > │         method3(v1, v21)                                                     │
00:00:12 #1610 [Verbose] > │ and method0 () : unit =                                                      │
00:00:12 #1611 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:12 #1612 [Verbose] > │     let v1 : Mut0 = {l0 = v0} : Mut0                                         │
00:00:12 #1613 [Verbose] > │     let v2 : UH1 = UH1_1                                                     │
00:00:12 #1614 [Verbose] > │     let v3 : int32 = 0                                                       │
00:00:12 #1615 [Verbose] > │     let v4 : UH1 = method1(v1, v2, v3)                                       │
00:00:12 #1616 [Verbose] > │     let v5 : int32 = 0                                                       │
00:00:12 #1617 [Verbose] > │     let v6 : int32 = method4(v4, v5)                                         │
00:00:12 #1618 [Verbose] > │     let v7 : string = $"__expect / actual: %A{v6} / expected: %A{10}"        │
00:00:12 #1619 [Verbose] > │     let v8 : bool = v6 = 10                                                  │
00:00:12 #1620 [Verbose] > │     let v9 : bool = v8 = false                                               │
00:00:12 #1621 [Verbose] > │     if v9 then                                                               │
00:00:12 #1622 [Verbose] > │         failwith<unit> v7                                                    │
00:00:12 #1623 [Verbose] > │     let v10 : UH1 = UH1_1                                                    │
00:00:12 #1624 [Verbose] > │     let v11 : int32 = 0                                                      │
00:00:12 #1625 [Verbose] > │     let v12 : UH1 = method5(v1, v10, v11)                                    │
00:00:12 #1626 [Verbose] > │     let v13 : int32 = 0                                                      │
00:00:12 #1627 [Verbose] > │     let v14 : int32 = method4(v12, v13)                                      │
00:00:12 #1628 [Verbose] > │     let v15 : string = $"__expect / actual: %A{v14} / expected: %A{10}"      │
00:00:12 #1629 [Verbose] > │     let v16 : bool = v14 = 10                                                │
00:00:12 #1630 [Verbose] > │     let v17 : bool = v16 = false                                             │
00:00:12 #1631 [Verbose] > │     if v17 then                                                              │
00:00:12 #1632 [Verbose] > │         failwith<unit> v15                                                   │
00:00:12 #1633 [Verbose] > │ method0()                                                                    │
00:00:12 #1634 [Verbose] > │                                                                              │
00:00:12 #1635 [Verbose] > │ print_and_return / x: 0                                                      │
00:00:12 #1636 [Verbose] > │ print_and_return / x: 1                                                      │
00:00:12 #1637 [Verbose] > │ print_and_return / x: 2                                                      │
00:00:12 #1638 [Verbose] > │ print_and_return / x: 3                                                      │
00:00:12 #1639 [Verbose] > │ print_and_return / x: 4                                                      │
00:00:12 #1640 [Verbose] > │ print_and_return / x: 5                                                      │
00:00:12 #1641 [Verbose] > │                                                                              │
00:00:12 #1642 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1643 [Verbose] >
00:00:12 #1644 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #1645 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #1646 [Verbose] > │ ## iterate                                                                   │
00:00:12 #1647 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1648 [Verbose] >
00:00:12 #1649 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1650 [Verbose] > inl iterate f x0 num_steps =
00:00:12 #1651 [Verbose] >     inl rec loop x n =
00:00:12 #1652 [Verbose] >         if n <= 0
00:00:12 #1653 [Verbose] >         then x
00:00:12 #1654 [Verbose] >         else loop (f x) (n - 1)
00:00:12 #1655 [Verbose] >     loop x0 num_steps
00:00:12 #1656 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3351-5128-560d5647c5c9/main.spi
00:00:12 #1657 [Verbose] >
00:00:12 #1658 [Verbose] > ╭─[ 126.49ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1659 [Verbose] > │ ()                                                                           │
00:00:12 #1660 [Verbose] > │                                                                              │
00:00:12 #1661 [Verbose] > │                                                                              │
00:00:12 #1662 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1663 [Verbose] >
00:00:12 #1664 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1665 [Verbose] > // // test
00:00:12 #1666 [Verbose] >
00:00:12 #1667 [Verbose] > 10i32 |> iterate ((*) 2) 1i32
00:00:12 #1668 [Verbose] > |> _equal 1024
00:00:12 #1669 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3364-6401-6fbff75d25d5/main.spi
00:00:12 #1670 [Verbose] >
00:00:12 #1671 [Verbose] > ╭─[ 124.16ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1672 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:12 #1673 [Verbose] > │     let v0 : string = $"__expect / actual: %A{1024} / expected: %A{1024}"    │
00:00:12 #1674 [Verbose] > │     ()                                                                       │
00:00:12 #1675 [Verbose] > │ method0()                                                                    │
00:00:12 #1676 [Verbose] > │                                                                              │
00:00:12 #1677 [Verbose] > │                                                                              │
00:00:12 #1678 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1679 [Verbose] >
00:00:12 #1680 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1681 [Verbose] > inl iterate_ f x0 num_steps =
00:00:12 #1682 [Verbose] >     let rec loop x n =
00:00:12 #1683 [Verbose] >         if n <= 0
00:00:12 #1684 [Verbose] >         then x
00:00:12 #1685 [Verbose] >         else loop (f x) (n - 1)
00:00:12 #1686 [Verbose] >     loop x0 num_steps
00:00:12 #1687 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3376-7647-7b1ffc17a8fd/main.spi
00:00:12 #1688 [Verbose] >
00:00:12 #1689 [Verbose] > ╭─[ 122.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1690 [Verbose] > │ ()                                                                           │
00:00:12 #1691 [Verbose] > │                                                                              │
00:00:12 #1692 [Verbose] > │                                                                              │
00:00:12 #1693 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1694 [Verbose] >
00:00:12 #1695 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1696 [Verbose] > // // test
00:00:12 #1697 [Verbose] >
00:00:12 #1698 [Verbose] > 10i32 |> iterate_ ((*) 2) 1i32
00:00:12 #1699 [Verbose] > |> _equal 1024
00:00:12 #1700 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3388-8880-89264fc6a96e/main.spi
00:00:12 #1701 [Verbose] >
00:00:12 #1702 [Verbose] > ╭─[ 132.53ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #1703 [Verbose] > │ let rec method1 (v0 : int32, v1 : int32) : int32 =                           │
00:00:12 #1704 [Verbose] > │     let v2 : bool = v1 <= 0                                                  │
00:00:12 #1705 [Verbose] > │     if v2 then                                                               │
00:00:12 #1706 [Verbose] > │         v0                                                                   │
00:00:12 #1707 [Verbose] > │     else                                                                     │
00:00:12 #1708 [Verbose] > │         let v3 : int32 = 2 * v0                                              │
00:00:12 #1709 [Verbose] > │         let v4 : int32 = v1 - 1                                              │
00:00:12 #1710 [Verbose] > │         method1(v3, v4)                                                      │
00:00:12 #1711 [Verbose] > │ and method0 () : unit =                                                      │
00:00:12 #1712 [Verbose] > │     let v0 : int32 = 1                                                       │
00:00:12 #1713 [Verbose] > │     let v1 : int32 = 10                                                      │
00:00:12 #1714 [Verbose] > │     let v2 : int32 = method1(v0, v1)                                         │
00:00:12 #1715 [Verbose] > │     let v3 : string = $"__expect / actual: %A{v2} / expected: %A{1024}"      │
00:00:12 #1716 [Verbose] > │     let v4 : bool = v2 = 1024                                                │
00:00:12 #1717 [Verbose] > │     let v5 : bool = v4 = false                                               │
00:00:12 #1718 [Verbose] > │     if v5 then                                                               │
00:00:12 #1719 [Verbose] > │         failwith<unit> v3                                                    │
00:00:12 #1720 [Verbose] > │ method0()                                                                    │
00:00:12 #1721 [Verbose] > │                                                                              │
00:00:12 #1722 [Verbose] > │                                                                              │
00:00:12 #1723 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #1724 [Verbose] >
00:00:12 #1725 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #1726 [Verbose] > inl iterate' f x0 num_steps =
00:00:12 #1727 [Verbose] >     listm.init num_steps id
00:00:12 #1728 [Verbose] >     |> listm.fold (fun x _ => f x) x0
00:00:12 #1729 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3402-0207-0ebf6463f05d/main.spi
00:00:13 #1730 [Verbose] >
00:00:13 #1731 [Verbose] > ╭─[ 118.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1732 [Verbose] > │ ()                                                                           │
00:00:13 #1733 [Verbose] > │                                                                              │
00:00:13 #1734 [Verbose] > │                                                                              │
00:00:13 #1735 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1736 [Verbose] >
00:00:13 #1737 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1738 [Verbose] > // // test
00:00:13 #1739 [Verbose] >
00:00:13 #1740 [Verbose] > 10i32 |> iterate' ((*) 2) 1i32
00:00:13 #1741 [Verbose] > |> _equal 1024
00:00:13 #1742 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3413-1398-16b3dd35191a/main.spi
00:00:13 #1743 [Verbose] >
00:00:13 #1744 [Verbose] > ╭─[ 148.63ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1745 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:13 #1746 [Verbose] > │     let v0 : string = $"__expect / actual: %A{1024} / expected: %A{1024}"    │
00:00:13 #1747 [Verbose] > │     ()                                                                       │
00:00:13 #1748 [Verbose] > │ method0()                                                                    │
00:00:13 #1749 [Verbose] > │                                                                              │
00:00:13 #1750 [Verbose] > │                                                                              │
00:00:13 #1751 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1752 [Verbose] >
00:00:13 #1753 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #1754 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #1755 [Verbose] > │ ## find_last                                                                 │
00:00:13 #1756 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #1757 [Verbose] >
00:00:13 #1758 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #1759 [Verbose] > inl find_last forall item result. fold_fn fn target : option result =
00:00:13 #1760 [Verbose] >     fold_fn (fun (item : item) (result : option result) =>
00:00:13 #1761 [Verbose] >         match result with
00:00:13 #1762 [Verbose] >         | None => fn item
00:00:13 #1763 [Verbose] >         | result => result
00:00:13 #1764 [Verbose] >     ) target (None : option result)
00:00:13 #1765 [Verbose] >
00:00:13 #1766 [Verbose] > inl array_find_last forall item result. (fn : item -> option result) (target : a
00:00:13 #1767 [Verbose] > i32 item) : option result =
00:00:13 #1768 [Verbose] >     find_last am.foldBack fn target
00:00:13 #1769 [Verbose] >
00:00:13 #1770 [Verbose] > inl list_find_last forall item result. (fn : item -> option result) (target :
00:00:13 #1771 [Verbose] > list item) : option result =
00:00:13 #1772 [Verbose] >     find_last listm.foldBack fn target
00:00:13 #1773 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-3428-2897-2cc306538124/main.spi
00:00:13 #1774 [Verbose] >
00:00:13 #1775 [Verbose] > ╭─[ 121.45ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #1776 [Verbose] > │ ()                                                                           │
00:00:13 #1777 [Verbose] > │                                                                              │
00:00:13 #1778 [Verbose] > │                                                                              │
00:00:13 #1779 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1780 [Verbose] > [NbConvertApp] Converting notebook seq.dib.ipynb to html
00:00:14 #1781 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:14 #1782 [Verbose] >   validate(nb)
00:00:14 #1783 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:14 #1784 [Verbose] >   return _pygments_highlight(
00:00:14 #1785 [Verbose] > [NbConvertApp] Writing 391483 bytes to seq.dib.html
00:00:15 #1786 [Debug] executeAsync / exitCode: 0 / output.Length: 146476
00:00:15 #1787 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 util.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ # util                                                                       │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > // // test
00:00:02 #27 [Verbose] >
00:00:02 #28 [Verbose] > open testing
00:00:04 #29 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-4031-3197-36b396552d76/main.spi
00:00:05 #30 [Verbose] >
00:00:05 #31 [Verbose] > ╭─[ 3.46s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #32 [Verbose] > │ ()                                                                           │
00:00:05 #33 [Verbose] > │                                                                              │
00:00:05 #34 [Verbose] > │                                                                              │
00:00:05 #35 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #36 [Verbose] >
00:00:05 #37 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #38 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #39 [Verbose] > │ ## ski                                                                       │
00:00:05 #40 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #41 [Verbose] >
00:00:05 #42 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #43 [Verbose] > union rec ski =
00:00:05 #44 [Verbose] >     | I
00:00:05 #45 [Verbose] >     | K
00:00:05 #46 [Verbose] >     | S
00:00:05 #47 [Verbose] >     | App : ski * ski
00:00:05 #48 [Verbose] >
00:00:05 #49 [Verbose] > inl rec eval ski =
00:00:05 #50 [Verbose] >     match ski with
00:00:05 #51 [Verbose] >     | App (App (K, x), y) => eval x
00:00:05 #52 [Verbose] >     | App (App (App (S, x), y), z) => eval (App (App (x, z), App (y, z)))
00:00:05 #53 [Verbose] >     | App (I, x) => eval x
00:00:05 #54 [Verbose] >     | App (K, x) => App (K, eval x)
00:00:05 #55 [Verbose] >     | App (f, x) => eval (App (eval f, x))
00:00:05 #56 [Verbose] >     | _ => ski
00:00:05 #57 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-4249-4915-4c695bb5fc0f/main.spi
00:00:05 #58 [Verbose] >
00:00:05 #59 [Verbose] > ╭─[ 149.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #60 [Verbose] > │ ()                                                                           │
00:00:05 #61 [Verbose] > │                                                                              │
00:00:05 #62 [Verbose] > │                                                                              │
00:00:05 #63 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #64 [Verbose] >
00:00:05 #65 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #66 [Verbose] > // // test
00:00:05 #67 [Verbose] >
00:00:05 #68 [Verbose] > eval I
00:00:05 #69 [Verbose] > |> _equal I
00:00:05 #70 [Verbose] >
00:00:05 #71 [Verbose] > eval (App (I, I))
00:00:05 #72 [Verbose] > |> _equal I
00:00:05 #73 [Verbose] >
00:00:05 #74 [Verbose] > eval (App (I, App (I, I)))
00:00:05 #75 [Verbose] > |> _equal I
00:00:05 #76 [Verbose] >
00:00:05 #77 [Verbose] > eval (App (App (I, I), I))
00:00:05 #78 [Verbose] > |> _equal I
00:00:05 #79 [Verbose] >
00:00:05 #80 [Verbose] > eval (App (App (App (I, I), I), I))
00:00:05 #81 [Verbose] > |> _equal I
00:00:05 #82 [Verbose] >
00:00:05 #83 [Verbose] > eval K
00:00:05 #84 [Verbose] > |> _equal K
00:00:05 #85 [Verbose] >
00:00:05 #86 [Verbose] > eval (App (K, I))
00:00:05 #87 [Verbose] > |> _equal (App (K, I))
00:00:05 #88 [Verbose] >
00:00:05 #89 [Verbose] > eval (App (K, K))
00:00:05 #90 [Verbose] > |> _equal (App (K, K))
00:00:05 #91 [Verbose] >
00:00:05 #92 [Verbose] > eval (App (App (K, I), K))
00:00:05 #93 [Verbose] > |> _equal I
00:00:05 #94 [Verbose] >
00:00:05 #95 [Verbose] > eval (App (App (K, K), I))
00:00:05 #96 [Verbose] > |> _equal K
00:00:05 #97 [Verbose] >
00:00:05 #98 [Verbose] > eval (App (App (App (App (K, K), I), S), K))
00:00:05 #99 [Verbose] > |> _equal S
00:00:05 #100 [Verbose] >
00:00:05 #101 [Verbose] > eval S
00:00:05 #102 [Verbose] > |> _equal S
00:00:05 #103 [Verbose] >
00:00:05 #104 [Verbose] > eval (App (App (App (S, I), I), I))
00:00:05 #105 [Verbose] > |> _equal I
00:00:05 #106 [Verbose] >
00:00:05 #107 [Verbose] > eval (App (App (App (S, K), K), I))
00:00:05 #108 [Verbose] > |> _equal I
00:00:05 #109 [Verbose] >
00:00:05 #110 [Verbose] > eval (App (App (App (S, K), I), (App (App (K, I), S))))
00:00:05 #111 [Verbose] > |> _equal I
00:00:05 #112 [Verbose] >
00:00:05 #113 [Verbose] > eval (App (App (K, S), App (I, App (App (App (S, K), S), I))))
00:00:05 #114 [Verbose] > |> _equal S
00:00:05 #115 [Verbose] >
00:00:05 #116 [Verbose] > eval (App (App (App (S, K), I), K))
00:00:05 #117 [Verbose] > |> _equal K
00:00:06 #118 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-4263-6376-666b6008feaf/main.spi
00:00:06 #119 [Verbose] >
00:00:06 #120 [Verbose] > ╭─[ 892.57ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #121 [Verbose] > │ type UH0 =                                                                   │
00:00:06 #122 [Verbose] > │     | UH0_0 of UH0 * UH0                                                     │
00:00:06 #123 [Verbose] > │     | UH0_1                                                                  │
00:00:06 #124 [Verbose] > │     | UH0_2                                                                  │
00:00:06 #125 [Verbose] > │     | UH0_3                                                                  │
00:00:06 #126 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:06 #127 [Verbose] > │     let v0 : UH0 = UH0_1                                                     │
00:00:06 #128 [Verbose] > │     let v1 : UH0 = UH0_1                                                     │
00:00:06 #129 [Verbose] > │     let v2 : string = $"__expect / actual: %A{v0} / expected: %A{v1}"        │
00:00:06 #130 [Verbose] > │     let v6 : UH0 = UH0_1                                                     │
00:00:06 #131 [Verbose] > │     let v7 : UH0 = UH0_1                                                     │
00:00:06 #132 [Verbose] > │     let v8 : string = $"__expect / actual: %A{v6} / expected: %A{v7}"        │
00:00:06 #133 [Verbose] > │     let v12 : UH0 = UH0_1                                                    │
00:00:06 #134 [Verbose] > │     let v13 : UH0 = UH0_1                                                    │
00:00:06 #135 [Verbose] > │     let v14 : string = $"__expect / actual: %A{v12} / expected: %A{v13}"     │
00:00:06 #136 [Verbose] > │     let v18 : UH0 = UH0_1                                                    │
00:00:06 #137 [Verbose] > │     let v19 : UH0 = UH0_1                                                    │
00:00:06 #138 [Verbose] > │     let v20 : string = $"__expect / actual: %A{v18} / expected: %A{v19}"     │
00:00:06 #139 [Verbose] > │     let v24 : UH0 = UH0_1                                                    │
00:00:06 #140 [Verbose] > │     let v25 : UH0 = UH0_1                                                    │
00:00:06 #141 [Verbose] > │     let v26 : string = $"__expect / actual: %A{v24} / expected: %A{v25}"     │
00:00:06 #142 [Verbose] > │     let v30 : UH0 = UH0_2                                                    │
00:00:06 #143 [Verbose] > │     let v31 : UH0 = UH0_2                                                    │
00:00:06 #144 [Verbose] > │     let v32 : string = $"__expect / actual: %A{v30} / expected: %A{v31}"     │
00:00:06 #145 [Verbose] > │     let v36 : UH0 = UH0_2                                                    │
00:00:06 #146 [Verbose] > │     let v37 : UH0 = UH0_1                                                    │
00:00:06 #147 [Verbose] > │     let v38 : UH0 = UH0_0(v36, v37)                                          │
00:00:06 #148 [Verbose] > │     let v39 : UH0 = UH0_2                                                    │
00:00:06 #149 [Verbose] > │     let v40 : UH0 = UH0_1                                                    │
00:00:06 #150 [Verbose] > │     let v41 : UH0 = UH0_0(v39, v40)                                          │
00:00:06 #151 [Verbose] > │     let v42 : string = $"__expect / actual: %A{v38} / expected: %A{v41}"     │
00:00:06 #152 [Verbose] > │     let v54 : UH0 = UH0_2                                                    │
00:00:06 #153 [Verbose] > │     let v55 : UH0 = UH0_2                                                    │
00:00:06 #154 [Verbose] > │     let v56 : UH0 = UH0_0(v54, v55)                                          │
00:00:06 #155 [Verbose] > │     let v57 : UH0 = UH0_2                                                    │
00:00:06 #156 [Verbose] > │     let v58 : UH0 = UH0_2                                                    │
00:00:06 #157 [Verbose] > │     let v59 : UH0 = UH0_0(v57, v58)                                          │
00:00:06 #158 [Verbose] > │     let v60 : string = $"__expect / actual: %A{v56} / expected: %A{v59}"     │
00:00:06 #159 [Verbose] > │     let v72 : UH0 = UH0_1                                                    │
00:00:06 #160 [Verbose] > │     let v73 : UH0 = UH0_1                                                    │
00:00:06 #161 [Verbose] > │     let v74 : string = $"__expect / actual: %A{v72} / expected: %A{v73}"     │
00:00:06 #162 [Verbose] > │     let v78 : UH0 = UH0_2                                                    │
00:00:06 #163 [Verbose] > │     let v79 : UH0 = UH0_2                                                    │
00:00:06 #164 [Verbose] > │     let v80 : string = $"__expect / actual: %A{v78} / expected: %A{v79}"     │
00:00:06 #165 [Verbose] > │     let v84 : UH0 = UH0_3                                                    │
00:00:06 #166 [Verbose] > │     let v85 : UH0 = UH0_3                                                    │
00:00:06 #167 [Verbose] > │     let v86 : string = $"__expect / actual: %A{v84} / expected: %A{v85}"     │
00:00:06 #168 [Verbose] > │     let v90 : UH0 = UH0_3                                                    │
00:00:06 #169 [Verbose] > │     let v91 : UH0 = UH0_3                                                    │
00:00:06 #170 [Verbose] > │     let v92 : string = $"__expect / actual: %A{v90} / expected: %A{v91}"     │
00:00:06 #171 [Verbose] > │     let v96 : UH0 = UH0_1                                                    │
00:00:06 #172 [Verbose] > │     let v97 : UH0 = UH0_1                                                    │
00:00:06 #173 [Verbose] > │     let v98 : string = $"__expect / actual: %A{v96} / expected: %A{v97}"     │
00:00:06 #174 [Verbose] > │     let v102 : UH0 = UH0_1                                                   │
00:00:06 #175 [Verbose] > │     let v103 : UH0 = UH0_1                                                   │
00:00:06 #176 [Verbose] > │     let v104 : string = $"__expect / actual: %A{v102} / expected: %A{v103}"  │
00:00:06 #177 [Verbose] > │     let v108 : UH0 = UH0_1                                                   │
00:00:06 #178 [Verbose] > │     let v109 : UH0 = UH0_1                                                   │
00:00:06 #179 [Verbose] > │     let v110 : string = $"__expect / actual: %A{v108} / expected: %A{v109}"  │
00:00:06 #180 [Verbose] > │     let v114 : UH0 = UH0_3                                                   │
00:00:06 #181 [Verbose] > │     let v115 : UH0 = UH0_3                                                   │
00:00:06 #182 [Verbose] > │     let v116 : string = $"__expect / actual: %A{v114} / expected: %A{v115}"  │
00:00:06 #183 [Verbose] > │     let v120 : UH0 = UH0_2                                                   │
00:00:06 #184 [Verbose] > │     let v121 : UH0 = UH0_2                                                   │
00:00:06 #185 [Verbose] > │     let v122 : string = $"__expect / actual: %A{v120} / expected: %A{v121}"  │
00:00:06 #186 [Verbose] > │     ()                                                                       │
00:00:06 #187 [Verbose] > │ method0()                                                                    │
00:00:06 #188 [Verbose] > │                                                                              │
00:00:06 #189 [Verbose] > │                                                                              │
00:00:06 #190 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #191 [Verbose] > [NbConvertApp] Converting notebook util.dib.ipynb to html
00:00:07 #192 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:07 #193 [Verbose] >   validate(nb)
00:00:07 #194 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:07 #195 [Verbose] >   return _pygments_highlight(
00:00:08 #196 [Verbose] > [NbConvertApp] Writing 286587 bytes to util.dib.html
00:00:08 #197 [Debug] executeAsync / exitCode: 0 / output.Length: 11542
00:00:08 #198 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #13 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 rust.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ # rust                                                                       │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > // // test
00:00:02 #27 [Verbose] >
00:00:02 #28 [Verbose] > open testing
00:00:04 #29 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-4893-9387-9a52600f4890/main.spi
00:00:05 #30 [Verbose] >
00:00:05 #31 [Verbose] > ╭─[ 3.42s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #32 [Verbose] > │ ()                                                                           │
00:00:05 #33 [Verbose] > │                                                                              │
00:00:05 #34 [Verbose] > │                                                                              │
00:00:05 #35 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #36 [Verbose] >
00:00:05 #37 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #38 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #39 [Verbose] > │ ## emit_expr                                                                 │
00:00:05 #40 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #41 [Verbose] >
00:00:05 #42 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #43 [Verbose] > inl emit_expr forall a t. (args : a) (code : string) : t =
00:00:05 #44 [Verbose] >     real
00:00:05 #45 [Verbose] >         $"Fable.Core.RustInterop.emitRustExpr !args !code" : t
00:00:05 #46 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-5112-1267-1e5644a77250/main.spi
00:00:05 #47 [Verbose] >
00:00:05 #48 [Verbose] > ╭─[ 148.18ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #49 [Verbose] > │ ()                                                                           │
00:00:05 #50 [Verbose] > │                                                                              │
00:00:05 #51 [Verbose] > │                                                                              │
00:00:05 #52 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #53 [Verbose] >
00:00:05 #54 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #55 [Verbose] > inl types () =
00:00:05 #56 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Func0<$0>\")>]] type
00:00:05 #57 [Verbose] > Func0<'T> = class end"
00:00:05 #58 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Func1<$0, $1>\")>]] type
00:00:05 #59 [Verbose] > Func0<'T, 'U> = class end"
00:00:05 #60 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Box<$0>\")>]] type Box<'T> =
00:00:05 #61 [Verbose] > class end"
00:00:05 #62 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"dyn $0\")>]] type Dyn<'T> =
00:00:05 #63 [Verbose] > class end"
00:00:05 #64 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn() -> $0\")>]] type Fn<'T>
00:00:05 #65 [Verbose] > = class end"
00:00:05 #66 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn()\")>]] type FnUnit =
00:00:05 #67 [Verbose] > class end"
00:00:05 #68 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"FnOnce() -> $0\")>]] type
00:00:05 #69 [Verbose] > FnOnce<'T> = class end"
00:00:05 #70 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn($0, $1)\")>]] type
00:00:05 #71 [Verbose] > ActionFn2<'T, 'U> = class end"
00:00:05 #72 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"impl $0\")>]] type Impl<'T> =
00:00:05 #73 [Verbose] > class end"
00:00:05 #74 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"mut $0\")>]] type Mut<'T> =
00:00:05 #75 [Verbose] > class end"
00:00:05 #76 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"&$0\")>]] type Ref<'T> =
00:00:05 #77 [Verbose] > class end"
00:00:05 #78 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"[[$0]]\")>]] type Slice<'T> =
00:00:05 #79 [Verbose] > class end"
00:00:05 #80 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"[[$0; $1]]\")>]] type
00:00:05 #81 [Verbose] > Slice'<'T, 'U> = class end"
00:00:05 #82 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"&'static $0\")>]] type
00:00:05 #83 [Verbose] > StaticRef<'T> = class end"
00:00:05 #84 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"str\")>]] type Str = class
00:00:05 #85 [Verbose] > end"
00:00:05 #86 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"Vec<$0>\")>]] type Vec<'T> =
00:00:05 #87 [Verbose] > class end"
00:00:05 #88 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"base64::DecodeError\")>]]
00:00:05 #89 [Verbose] > type base64_DecodeError = class end"
00:00:05 #90 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"borsh::io::Error\")>]] type
00:00:05 #91 [Verbose] > borsh_io_Error = class end"
00:00:05 #92 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"chrono::DateTime<$0>\")>]]
00:00:05 #93 [Verbose] > type chrono_DateTime<'T> = class end"
00:00:05 #94 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"chrono::Local\")>]] type
00:00:05 #95 [Verbose] > chrono_Local = class end"
00:00:05 #96 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"chrono::NaiveDateTime\")>]]
00:00:05 #97 [Verbose] > type chrono_NaiveDateTime = class end"
00:00:05 #98 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"chrono::Utc\")>]] type
00:00:05 #99 [Verbose] > chrono_Utc = class end"
00:00:05 #100 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"js_sys::Function\")>]] type
00:00:05 #101 [Verbose] > js_sys_Function = class end"
00:00:05 #102 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"js_sys::JsString\")>]] type
00:00:05 #103 [Verbose] > js_sys_JsString = class end"
00:00:05 #104 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"reqwest_wasm::Response\")>]]
00:00:05 #105 [Verbose] > type reqwest_Response = class end"
00:00:05 #106 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"reqwest_wasm::Error\")>]]
00:00:05 #107 [Verbose] > type reqwest_Error = class end"
00:00:05 #108 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"rexie::Error\")>]] type
00:00:05 #109 [Verbose] > rexie_Error = class end"
00:00:05 #110 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"rexie::Rexie\")>]] type
00:00:05 #111 [Verbose] > rexie_Rexie = class end"
00:00:05 #112 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"rexie::Store\")>]] type
00:00:05 #113 [Verbose] > rexie_Store = class end"
00:00:05 #114 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"rexie::Transaction\")>]] type
00:00:05 #115 [Verbose] > rexie_Transaction = class end"
00:00:05 #116 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"serde_json::Error\")>]] type
00:00:05 #117 [Verbose] > serde_json_Error = class end"
00:00:05 #118 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"serde_json::Value\")>]] type
00:00:05 #119 [Verbose] > serde_json_Value = class end"
00:00:05 #120 [Verbose] >     global "[[<Fable.Core.Erase;
00:00:05 #121 [Verbose] > Fable.Core.Emit(\"serde_wasm_bindgen::Error\")>]] type serde_wasm_bindgen_Error
00:00:05 #122 [Verbose] > = class end"
00:00:05 #123 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::any::Any\")>]] type
00:00:05 #124 [Verbose] > std_any_Any = class end"
00:00:05 #125 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::cell::RefCell<$0>\")>]]
00:00:05 #126 [Verbose] > type std_cell_RefCell<'T> = class end"
00:00:05 #127 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::collections::HashMap<$0,
00:00:05 #128 [Verbose] > $1>\")>]] type std_collections_HashMap<'K, 'V> = class end"
00:00:05 #129 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::future::Future<Output =
00:00:05 #130 [Verbose] > $0>\")>]] type Future<'T> = class end"
00:00:05 #131 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::pin::Pin<$0>\")>]] type
00:00:05 #132 [Verbose] > std_pin_Pin<'T> = class end"
00:00:05 #133 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::rc::Rc<$0>\")>]] type
00:00:05 #134 [Verbose] > std_rc_Rc<'T> = class end"
00:00:05 #135 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::rc::Weak<$0>\")>]] type
00:00:05 #136 [Verbose] > std_rc_Weak<'T> = class end"
00:00:05 #137 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::str::Utf8Error\")>]]
00:00:05 #138 [Verbose] > type std_str_Utf8Error = class end"
00:00:05 #139 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::string::String\")>]]
00:00:05 #140 [Verbose] > type std_string_String = class end"
00:00:05 #141 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::time::Duration\")>]]
00:00:05 #142 [Verbose] > type std_time_Duration = class end"
00:00:05 #143 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"std::sync::Arc<$0>\")>]] type
00:00:05 #144 [Verbose] > std_sync_Arc<'T> = class end"
00:00:05 #145 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"wasm_bindgen::JsValue\")>]]
00:00:05 #146 [Verbose] > type wasm_bindgen_JsValue = class end"
00:00:05 #147 [Verbose] >     global "[[<Fable.Core.Erase;
00:00:05 #148 [Verbose] > Fable.Core.Emit(\"wasm_bindgen::closure::Closure<$0>\")>]] type
00:00:05 #149 [Verbose] > wasm_bindgen_closure_Closure<'T> = class end"
00:00:05 #150 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"web_sys::Document\")>]] type
00:00:05 #151 [Verbose] > web_sys_Document = class end"
00:00:05 #152 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"web_sys::HtmlElement\")>]]
00:00:05 #153 [Verbose] > type web_sys_HtmlElement = class end"
00:00:05 #154 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"web_sys::Storage\")>]] type
00:00:05 #155 [Verbose] > web_sys_Storage = class end"
00:00:05 #156 [Verbose] >     global "[[<Fable.Core.Erase; Fable.Core.Emit(\"web_sys::Window\")>]] type
00:00:05 #157 [Verbose] > web_sys_Window = class end"
00:00:05 #158 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-5127-2740-2970b2b1ab7a/main.spi
00:00:06 #159 [Verbose] >
00:00:06 #160 [Verbose] > ╭─[ 158.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #161 [Verbose] > │ ()                                                                           │
00:00:06 #162 [Verbose] > │                                                                              │
00:00:06 #163 [Verbose] > │                                                                              │
00:00:06 #164 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #165 [Verbose] >
00:00:06 #166 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #167 [Verbose] > nominal any = $"std_any_Any"
00:00:06 #168 [Verbose] > nominal ref_cell t = $"std_cell_RefCell<`t>"
00:00:06 #169 [Verbose] > nominal async t = $"Async<`t>"
00:00:06 #170 [Verbose] > nominal base64_decode_error = $"base64_DecodeError"
00:00:06 #171 [Verbose] > nominal borsh_io_error = $"borsh_io_Error"
00:00:06 #172 [Verbose] > nominal utf8_error = $"std_str_Utf8Error"
00:00:06 #173 [Verbose] > nominal rexie = $"rexie_Rexie"
00:00:06 #174 [Verbose] > nominal rexie_store = $"rexie_Store"
00:00:06 #175 [Verbose] > nominal rexie_transaction = $"rexie_Transaction"
00:00:06 #176 [Verbose] > nominal rexie_error = $"rexie_Error"
00:00:06 #177 [Verbose] > nominal json_value = $"serde_json_Value"
00:00:06 #178 [Verbose] > nominal json_error = $"serde_json_Error"
00:00:06 #179 [Verbose] > nominal serde_wasm_bindgen_error = $"serde_wasm_bindgen_Error"
00:00:06 #180 [Verbose] > nominal js_value = $"wasm_bindgen_JsValue"
00:00:06 #181 [Verbose] > nominal closure t = $"wasm_bindgen_closure_Closure<`t>"
00:00:06 #182 [Verbose] > nominal hash_map k v = $"std_collections_HashMap<`k, `v>"
00:00:06 #183 [Verbose] > nominal rc t = $"std_rc_Rc<`t>"
00:00:06 #184 [Verbose] > nominal weak_rc t = $"std_rc_Weak<`t>"
00:00:06 #185 [Verbose] > nominal box t = $"Box<`t>"
00:00:06 #186 [Verbose] > nominal pin t = $"std_pin_Pin<`t>"
00:00:06 #187 [Verbose] > nominal arc t = $"std_sync_Arc<`t>"
00:00:06 #188 [Verbose] > nominal std_string = $"std_string_String"
00:00:06 #189 [Verbose] > nominal duration = $"std_time_Duration"
00:00:06 #190 [Verbose] > nominal js_function = $"js_sys_Function"
00:00:06 #191 [Verbose] > nominal js_string = $"js_sys_JsString"
00:00:06 #192 [Verbose] > nominal window = $"web_sys_Window"
00:00:06 #193 [Verbose] > nominal document = $"web_sys_Document"
00:00:06 #194 [Verbose] > nominal html_element = $"web_sys_HtmlElement"
00:00:06 #195 [Verbose] > nominal storage = $"web_sys_Storage"
00:00:06 #196 [Verbose] > nominal dyn' t = $"Dyn<`t>"
00:00:06 #197 [Verbose] > nominal fn' t = $"Fn<`t>"
00:00:06 #198 [Verbose] > nominal action_fn2 t u = $"ActionFn2<`t, `u>"
00:00:06 #199 [Verbose] > nominal fn_once t = $"FnOnce<`t>"
00:00:06 #200 [Verbose] > nominal fn_unit = $"FnUnit"
00:00:06 #201 [Verbose] > nominal func0 t = $"Func0<`t>"
00:00:06 #202 [Verbose] > nominal func1 t u = $"Func0<`t, `u>"
00:00:06 #203 [Verbose] > nominal impl t = $"Impl<`t>"
00:00:06 #204 [Verbose] > nominal mut' t = $"Mut<`t>"
00:00:06 #205 [Verbose] > nominal ref' t = $"Ref<`t>"
00:00:06 #206 [Verbose] > nominal slice t = $"Slice<`t>"
00:00:06 #207 [Verbose] > nominal slice' t u = $"Slice'<`t, `u>"
00:00:06 #208 [Verbose] > nominal static_ref' t = $"StaticRef<`t>"
00:00:06 #209 [Verbose] > nominal str = $"Str"
00:00:06 #210 [Verbose] > nominal vec t = $"Vec<`t>"
00:00:06 #211 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-5142-4298-457a284af694/main.spi
00:00:06 #212 [Verbose] >
00:00:06 #213 [Verbose] > ╭─[ 146.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #214 [Verbose] > │ ()                                                                           │
00:00:06 #215 [Verbose] > │                                                                              │
00:00:06 #216 [Verbose] > │                                                                              │
00:00:06 #217 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 #218 [Verbose] >
00:00:06 #219 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 #220 [Verbose] > inl (~!\) forall t. (code : string) : t =
00:00:06 #221 [Verbose] >     emit_expr () code
00:00:06 #222 [Verbose] >
00:00:06 #223 [Verbose] > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:00:06 #224 [Verbose] >     emit_expr args code
00:00:06 #225 [Verbose] >
00:00:06 #226 [Verbose] > inl raw_string_literal (s : string) : ref' str =
00:00:06 #227 [Verbose] >     !\($"\"r#\\\"\" + !s + \"\\\"#\"")
00:00:06 #228 [Verbose] >
00:00:06 #229 [Verbose] > inl raw_string_literal_static (s : string) : static_ref' str =
00:00:06 #230 [Verbose] >     !\($"\"r#\\\"\" + !s + \"\\\"#\"")
00:00:06 #231 [Verbose] >
00:00:06 #232 [Verbose] > inl (~#) (s : string) : ref' str =
00:00:06 #233 [Verbose] >     raw_string_literal s
00:00:06 #234 [Verbose] >
00:00:06 #235 [Verbose] > inl (~##) (s : string) : static_ref' str =
00:00:06 #236 [Verbose] >     raw_string_literal_static s
00:00:06 #237 [Verbose] >
00:00:06 #238 [Verbose] > inl new_box forall t. (x : t) : box t =
00:00:06 #239 [Verbose] >     inl x = join x
00:00:06 #240 [Verbose] >     !\($'"Box::new(!x)"')
00:00:06 #241 [Verbose] >
00:00:06 #242 [Verbose] > inl new_rc forall t. (x : t) : rc t =
00:00:06 #243 [Verbose] >     inl x = join x
00:00:06 #244 [Verbose] >     !\($'"std::rc::Rc::new(!x)"')
00:00:06 #245 [Verbose] >
00:00:06 #246 [Verbose] > inl rc_clone forall t. (x : rc t) : rc t =
00:00:06 #247 [Verbose] >     inl x = join x
00:00:06 #248 [Verbose] >     !\($'"std::rc::Rc::clone(&!x)"')
00:00:06 #249 [Verbose] >
00:00:06 #250 [Verbose] > inl rc_downgrade forall t. (x : rc t) : weak_rc t =
00:00:06 #251 [Verbose] >     inl x = join x
00:00:06 #252 [Verbose] >     !\($'"std::rc::Rc::downgrade(&!x)"')
00:00:06 #253 [Verbose] >
00:00:06 #254 [Verbose] > inl new_ref_cell forall t. (x : t) : ref_cell t =
00:00:06 #255 [Verbose] >     inl x = join x
00:00:06 #256 [Verbose] >     !\($'"std::cell::RefCell::new(!x)"')
00:00:06 #257 [Verbose] >
00:00:06 #258 [Verbose] > inl ref_cell_borrow forall t. (x : rc (ref_cell t)) : t =
00:00:06 #259 [Verbose] >     inl x = join x
00:00:06 #260 [Verbose] >     !\($'"*std::cell::RefCell::borrow(&std::rc::Rc::clone(&!x))"')
00:00:06 #261 [Verbose] >
00:00:06 #262 [Verbose] > inl ref_cell_borrow_mut forall t. (x : rc (ref_cell t)) : mut' t =
00:00:06 #263 [Verbose] >     inl x = join x
00:00:06 #264 [Verbose] >     !\($'"*std::cell::RefCell::borrow_mut(&std::rc::Rc::clone(&!x))"')
00:00:06 #265 [Verbose] >
00:00:06 #266 [Verbose] > inl to_mut forall t. (x : t) : mut' t =
00:00:06 #267 [Verbose] >     emit_expr () $"\"let mut !x = !x\""
00:00:06 #268 [Verbose] >     emit_expr () $"\"!x\""
00:00:06 #269 [Verbose] >
00:00:06 #270 [Verbose] > inl new_arc forall t. (x : t) : arc t =
00:00:06 #271 [Verbose] >     inl x = join x
00:00:06 #272 [Verbose] >     !\($'"std::sync::Arc::new(!x)"')
00:00:06 #273 [Verbose] >
00:00:06 #274 [Verbose] > inl closure_wrap forall t. (x : box t) : closure t =
00:00:06 #275 [Verbose] >     inl x = join x
00:00:06 #276 [Verbose] >     !\($'"wasm_bindgen::closure::Closure::wrap(!x)"')
00:00:06 #277 [Verbose] >
00:00:06 #278 [Verbose] > inl box_fn forall t. (x : () -> ()) : box t =
00:00:06 #279 [Verbose] >     inl x = join x
00:00:06 #280 [Verbose] >     !\($'"Box::new(move || !x())"')
00:00:06 #281 [Verbose] >
00:00:06 #282 [Verbose] > inl closure_forget forall t. (closure : closure t) =
00:00:06 #283 [Verbose] >     !\($'"!closure.forget()"') : ()
00:00:06 #284 [Verbose] >
00:00:06 #285 [Verbose] > inl new_pin forall t. (x : t) : pin (box t) =
00:00:06 #286 [Verbose] >     inl x = join x
00:00:06 #287 [Verbose] >     !\($'"Box::pin(!x)"')
00:00:06 #288 [Verbose] >
00:00:06 #289 [Verbose] > inl closure_as_ref forall t. (closure : closure t) : ref' js_value =
00:00:06 #290 [Verbose] >     !\($'"wasm_bindgen::closure::Closure::as_ref(&!closure)"')
00:00:06 #291 [Verbose] >
00:00:06 #292 [Verbose] > inl unchecked_ref (ref : ref' js_value) : ref' js_function =
00:00:06 #293 [Verbose] >     !\($'"wasm_bindgen::JsCast::unchecked_ref(!ref)"')
00:00:06 #294 [Verbose] >
00:00:06 #295 [Verbose] > inl deref forall t. (ref : ref' t) : t =
00:00:06 #296 [Verbose] >     inl ref = join ref
00:00:06 #297 [Verbose] >     !\($'"*!ref"')
00:00:06 #298 [Verbose] >
00:00:06 #299 [Verbose] > inl func0_get forall t. (x : func0 t) : t =
00:00:06 #300 [Verbose] >     inl x = join x
00:00:06 #301 [Verbose] >     !\($'"!x()"')
00:00:06 #302 [Verbose] >
00:00:06 #303 [Verbose] > inl func0_move forall t. (fn : func0 t) : t =
00:00:06 #304 [Verbose] >     inl fn = join fn
00:00:06 #305 [Verbose] >     !\($'"(move || !fn())()"')
00:00:06 #306 [Verbose] >
00:00:06 #307 [Verbose] > inl move forall t. (fn : () -> t) : func0 t =
00:00:06 #308 [Verbose] >     inl fn = join fn
00:00:06 #309 [Verbose] >     !\($'"Func0::new(move || !fn())"')
00:00:06 #310 [Verbose] >
00:00:06 #311 [Verbose] > inl to_static_ref_unbox forall t. (x : ref' t) : static_ref' t =
00:00:06 #312 [Verbose] >     $"!x |> unbox"
00:00:06 #313 [Verbose] >
00:00:06 #314 [Verbose] > inl box_leak forall t. (x : box t) : static_ref' (mut' t) =
00:00:06 #315 [Verbose] >     emit_expr () $"\"Box::leak(!x)\""
00:00:06 #316 [Verbose] >
00:00:06 #317 [Verbose] > inl duration_from_millis (ms : u64) : duration =
00:00:06 #318 [Verbose] >     inl ms = join ms
00:00:06 #319 [Verbose] >     !\($'"std::time::Duration::from_millis(!ms)"')
00:00:06 #320 [Verbose] >
00:00:06 #321 [Verbose] > inl sleep (duration : duration) : () =
00:00:06 #322 [Verbose] >     inl duration = join duration
00:00:06 #323 [Verbose] >     !\($'"std::thread::sleep(!duration)"')
00:00:06 #324 [Verbose] > Building /tmp/!dotnet-repl/20240226-2107-5157-5774-50b4a8c1049b/main.spi
00:00:06 #325 [Verbose] >
00:00:06 #326 [Verbose] > ╭─[ 149.52ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 #327 [Verbose] > │ ()                                                                           │
00:00:06 #328 [Verbose] > │                                                                              │
00:00:06 #329 [Verbose] > │                                                                              │
00:00:06 #330 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #331 [Verbose] > [NbConvertApp] Converting notebook rust.dib.ipynb to html
00:00:07 #332 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:07 #333 [Verbose] >   validate(nb)
00:00:07 #334 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:07 #335 [Verbose] >   return _pygments_highlight(
00:00:07 #336 [Verbose] > [NbConvertApp] Writing 314291 bytes to rust.dib.html
00:00:08 #337 [Debug] executeAsync / exitCode: 0 / output.Length: 14724
00:00:08 #338 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/lib/spiral
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 physics.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ # physics                                                                    │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > #!import ../../lib/fsharp/Plotting.dib
00:00:02 #27 [Verbose] >
00:00:02 #28 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:02 #29 [Verbose] > #r
00:00:02 #30 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
00:00:02 #31 [Verbose] > NetCore.Html.Abstractions.dll"
00:00:02 #32 [Verbose] > #r
00:00:02 #33 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:02 #34 [Verbose] > Net.Interactive.dll"
00:00:02 #35 [Verbose] > #r
00:00:02 #36 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:02 #37 [Verbose] > Net.Interactive.FSharp.dll"
00:00:02 #38 [Verbose] > #r
00:00:02 #39 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:02 #40 [Verbose] > Net.Interactive.Formatting.dll"
00:00:02 #41 [Verbose] > open System
00:00:02 #42 [Verbose] > open System.IO
00:00:02 #43 [Verbose] > open System.Text
00:00:02 #44 [Verbose] > open Microsoft.DotNet.Interactive.Formatting
00:00:04 #45 [Verbose] >
00:00:04 #46 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:04 #47 [Verbose] > #r
00:00:04 #48 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:04 #49 [Verbose] > Net.Interactive.FSharp.dll"
00:00:04 #50 [Verbose] > open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
00:00:04 #51 [Verbose] > #r
00:00:04 #52 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:04 #53 [Verbose] > Net.Interactive.dll"
00:00:04 #54 [Verbose] > open type Microsoft.DotNet.Interactive.Kernel
00:00:04 #55 [Verbose] >
00:00:04 #56 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:04 #57 [Verbose] > //// test
00:00:04 #58 [Verbose] >
00:00:04 #59 [Verbose] > Formatter.ListExpansionLimit <- 100
00:00:04 #60 [Verbose] >
00:00:04 #61 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:04 #62 [Verbose] > #r
00:00:04 #63 [Verbose] > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:00:04 #64 [Verbose] > dard2.1/FSharp.Control.AsyncSeq.dll"
00:00:04 #65 [Verbose] > #r
00:00:04 #66 [Verbose] > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:00:04 #67 [Verbose] > 0/System.Reactive.dll"
00:00:04 #68 [Verbose] > #r
00:00:04 #69 [Verbose] > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:00:04 #70 [Verbose] > netstandard2.0/System.Reactive.Linq.dll"
00:00:04 #71 [Verbose] > #r
00:00:04 #72 [Verbose] > @"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
00:00:04 #73 [Verbose] > #r
00:00:04 #74 [Verbose] > @"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
00:00:04 #75 [Verbose] > b/net6.0/System.CommandLine.dll"
00:00:04 #76 [Verbose] > #r
00:00:04 #77 [Verbose] > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
00:00:04 #78 [Verbose] > rp.Json.dll"
00:00:04 #79 [Verbose] >
00:00:04 #80 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:04 #81 [Verbose] > #if !INTERACTIVE
00:00:04 #82 [Verbose] > namespace Polyglot
00:00:04 #83 [Verbose] > #endif
00:00:04 #84 [Verbose] >
00:00:04 #85 [Verbose] > module Common =
00:00:04 #86 [Verbose] >
00:00:04 #87 [Verbose] >     let nl = System.Environment.NewLine
00:00:04 #88 [Verbose] >     let q = @""""
00:00:04 #89 [Verbose] >
00:00:04 #90 [Verbose] >     let inline cons head tail = head :: tail
00:00:04 #91 [Verbose] >
00:00:04 #92 [Verbose] >     module String =
00:00:04 #93 [Verbose] >         let inline contains (value : string) (input : string) =
00:00:04 #94 [Verbose] >             input.Contains value
00:00:04 #95 [Verbose] >
00:00:04 #96 [Verbose] >         let inline endsWith (value : string) (input : string) =
00:00:04 #97 [Verbose] >             input.EndsWith value
00:00:04 #98 [Verbose] >
00:00:04 #99 [Verbose] >         let inline padLeft totalWidth paddingChar (input : string) =
00:00:04 #100 [Verbose] >             input.PadLeft (totalWidth, paddingChar)
00:00:04 #101 [Verbose] >
00:00:04 #102 [Verbose] >         let inline replace (oldValue : string) (newValue : string) (input :
00:00:04 #103 [Verbose] > string) =
00:00:04 #104 [Verbose] >             input.Replace (oldValue, newValue)
00:00:04 #105 [Verbose] >
00:00:04 #106 [Verbose] >         let inline split separator (input : string) =
00:00:04 #107 [Verbose] >             input.Split separator
00:00:04 #108 [Verbose] >
00:00:04 #109 [Verbose] >         let inline spli...
00:00:06 #110 [Verbose] >
00:00:06 #111 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #112 [Verbose] > #if !INTERACTIVE
00:00:06 #113 [Verbose] > namespace Polyglot
00:00:06 #114 [Verbose] > #endif
00:00:06 #115 [Verbose] >
00:00:06 #116 [Verbose] > module CommonFSharp =
00:00:06 #117 [Verbose] >
00:00:06 #118 [Verbose] >     open Common
00:00:06 #119 [Verbose] >
00:00:06 #120 [Verbose] >     /// ## getUnionCaseName
00:00:06 #121 [Verbose] >
00:00:06 #122 [Verbose] >     let inline getUnionCaseName<'T> (x: 'T) =
00:00:06 #123 [Verbose] >         match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
00:00:06 #124 [Verbose] >         | case, _ -> case.Name
00:00:06 #125 [Verbose] >
00:00:06 #126 [Verbose] >
00:00:06 #127 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #128 [Verbose] > #if !INTERACTIVE
00:00:06 #129 [Verbose] > namespace Polyglot
00:00:06 #130 [Verbose] > #endif
00:00:06 #131 [Verbose] >
00:00:06 #132 [Verbose] > module Crypto =
00:00:06 #133 [Verbose] >
00:00:06 #134 [Verbose] >     open Common
00:00:06 #135 [Verbose] >
00:00:06 #136 [Verbose] >     /// ## hashText
00:00:06 #137 [Verbose] >
00:00:06 #138 [Verbose] >     let hashText (input : string) =
00:00:06 #139 [Verbose] >         use sha256 = System.Security.Cryptography.SHA256.Create ()
00:00:06 #140 [Verbose] >         input
00:00:06 #141 [Verbose] >         |> System.Text.Encoding.UTF8.GetBytes
00:00:06 #142 [Verbose] >         |> sha256.ComputeHash
00:00:06 #143 [Verbose] >         |> Array.map (fun b -> b.ToString "x2")
00:00:06 #144 [Verbose] >         |> String.concat ""
00:00:06 #145 [Verbose] >
00:00:06 #146 [Verbose] >
00:00:06 #147 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #148 [Verbose] > #if !INTERACTIVE
00:00:06 #149 [Verbose] > namespace Polyglot
00:00:06 #150 [Verbose] > #endif
00:00:06 #151 [Verbose] >
00:00:06 #152 [Verbose] > module Async =
00:00:06 #153 [Verbose] >
00:00:06 #154 [Verbose] >     open Common
00:00:06 #155 [Verbose] >
00:00:06 #156 [Verbose] >     /// ## choice
00:00:06 #157 [Verbose] >
00:00:06 #158 [Verbose] >     let inline choice asyncs = async {
00:00:06 #159 [Verbose] >         let e = Event<_> ()
00:00:06 #160 [Verbose] >         use cts = new System.Threading.CancellationTokenSource ()
00:00:06 #161 [Verbose] >         let fn =
00:00:06 #162 [Verbose] >             asyncs
00:00:06 #163 [Verbose] >             |> Seq.map (fun a -> async {
00:00:06 #164 [Verbose] >                 let! x = a
00:00:06 #165 [Verbose] >                 e.Trigger x
00:00:06 #166 [Verbose] >             })
00:00:06 #167 [Verbose] >             |> Async.Parallel
00:00:06 #168 [Verbose] >             |> Async.Ignore
00:00:06 #169 [Verbose] >         Async.Start (fn, cts.Token)
00:00:06 #170 [Verbose] >         let! result = Async.AwaitEvent e.Publish
00:00:06 #171 [Verbose] >         cts.Cancel ()
00:00:06 #172 [Verbose] >         return result
00:00:06 #173 [Verbose] >     }
00:00:06 #174 [Verbose] >
00:00:06 #175 [Verbose] >     /// ## map
00:00:06 #176 [Verbose] >
00:00:06 #177 [Verbose] >     let inline map fn a = async {
00:00:06 #178 [Verbose] >         let! x = a
00:00:06 #179 [Verbose] >         return fn x
00:00:06 #180 [Verbose] >     }
00:00:06 #181 [Verbose] >
00:00:06 #182 [Verbose] >     /// ## catch
00:00:06 #183 [Verbose] >
00:00:06 #184 [Verbose] >     let inline catch a =
00:00:06 #185 [Verbose] >         a
00:00:06 #186 [Verbose] >         |> Async.Catch
00:00:06 #187 [Verbose] >         ...
00:00:06 #188 [Verbose] >
00:00:06 #189 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #190 [Verbose] > #if !INTERACTIVE
00:00:06 #191 [Verbose] > namespace Polyglot
00:00:06 #192 [Verbose] > #endif
00:00:06 #193 [Verbose] >
00:00:06 #194 [Verbose] > module AsyncSeq =
00:00:06 #195 [Verbose] >
00:00:06 #196 [Verbose] >     open Common
00:00:06 #197 [Verbose] >
00:00:06 #198 [Verbose] >     /// ## subscribeEvent
00:00:06 #199 [Verbose] >
00:00:06 #200 [Verbose] >     let inline subscribeEvent (event: IEvent<'H, 'A>) map =
00:00:06 #201 [Verbose] >         let observable = System.Reactive.Linq.Observable.FromEventPattern<'H,
00:00:06 #202 [Verbose] > 'A>(event.AddHandler, event.RemoveHandler)
00:00:06 #203 [Verbose] >         System.Reactive.Linq.Observable.Select (observable, fun event -> map
00:00:06 #204 [Verbose] > event.EventArgs)
00:00:06 #205 [Verbose] >         |> FSharp.Control.AsyncSeq.ofObservableBuffered
00:00:06 #206 [Verbose] >
00:00:06 #207 [Verbose] >     let subscribeToken (token : System.Threading.CancellationToken) =
00:00:06 #208 [Verbose] >         let tcs = new System.Threading.Tasks.TaskCompletionSource ()
00:00:06 #209 [Verbose] >         System.Action tcs.SetResult |> token.Register |> ignore
00:00:06 #210 [Verbose] >         let start = System.DateTime.Now.Ticks
00:00:06 #211 [Verbose] >         FSharp.Control.AsyncSeq.unfoldAsync
00:00:06 #212 [Verbose] >             (fun (...
00:00:06 #213 [Verbose] >
00:00:06 #214 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #215 [Verbose] > #if !INTERACTIVE
00:00:06 #216 [Verbose] > namespace Polyglot
00:00:06 #217 [Verbose] > #endif
00:00:06 #218 [Verbose] >
00:00:06 #219 [Verbose] > module Networking =
00:00:06 #220 [Verbose] >
00:00:06 #221 [Verbose] >     open Common
00:00:06 #222 [Verbose] >
00:00:06 #223 [Verbose] >     /// ## testPortOpen
00:00:06 #224 [Verbose] >
00:00:06 #225 [Verbose] >     let inline testPortOpen port = async {
00:00:06 #226 [Verbose] >         let! ct = Async.CancellationToken
00:00:06 #227 [Verbose] >         use client = new System.Net.Sockets.TcpClient ()
00:00:06 #228 [Verbose] >         try
00:00:06 #229 [Verbose] >             do! client.ConnectAsync ("127.0.0.1", port, ct) |>
00:00:06 #230 [Verbose] > Async.awaitValueTaskUnit
00:00:06 #231 [Verbose] >             return true
00:00:06 #232 [Verbose] >         with ex ->
00:00:06 #233 [Verbose] >             trace Verbose (fun () -> $"testPortOpen / ex: {ex |>
00:00:06 #234 [Verbose] > printException}") getLocals
00:00:06 #235 [Verbose] >             return false
00:00:06 #236 [Verbose] >     }
00:00:06 #237 [Verbose] >
00:00:06 #238 [Verbose] >     let inline testPortOpenTimeout timeout port = async {
00:00:06 #239 [Verbose] >         let! result =
00:00:06 #240 [Verbose] >             testPortOpen port
00:00:06 #241 [Verbose] >             |> Async.runWithTimeoutAsync timeout
00:00:06 #242 [Verbose] >         return
00:00:06 #243 [Verbose] >             match result with
00:00:06 #244 [Verbose] >             | None -> false
00:00:06 #245 [Verbose] >  ...
00:00:07 #246 [Verbose] >
00:00:07 #247 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:07 #248 [Verbose] > #if !INTERACTIVE
00:00:07 #249 [Verbose] > namespace Polyglot
00:00:07 #250 [Verbose] > #endif
00:00:07 #251 [Verbose] >
00:00:07 #252 [Verbose] > module Runtime =
00:00:07 #253 [Verbose] >
00:00:07 #254 [Verbose] >     open Common
00:00:07 #255 [Verbose] >
00:00:07 #256 [Verbose] >     /// ## isWindows
00:00:07 #257 [Verbose] >
00:00:07 #258 [Verbose] >     let isWindows =
00:00:07 #259 [Verbose] >         fun () ->
00:00:07 #260 [Verbose] >             System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
00:00:07 #261 [Verbose] >                 System.Runtime.InteropServices.OSPlatform.Windows
00:00:07 #262 [Verbose] >         |> memoize
00:00:07 #263 [Verbose] >
00:00:07 #264 [Verbose] >     /// ## getExecutableSuffix
00:00:07 #265 [Verbose] >
00:00:07 #266 [Verbose] >     let inline getExecutableSuffix () =
00:00:07 #267 [Verbose] >         if isWindows ()
00:00:07 #268 [Verbose] >         then ".exe"
00:00:07 #269 [Verbose] >         else ""
00:00:07 #270 [Verbose] >
00:00:07 #271 [Verbose] >     /// ## splitCommand
00:00:07 #272 [Verbose] >
00:00:07 #273 [Verbose] >     type private CommandParseStep =
00:00:07 #274 [Verbose] >         | Start
00:00:07 #275 [Verbose] >         | Path of quoted: bool
00:00:07 #276 [Verbose] >         | Arguments
00:00:07 #277 [Verbose] >
00:00:07 #278 [Verbose] >     let splitCommand (command: string) =
00:00:07 #279 [Verbose] >         let rec loop (path, args) chars step =
00:00:07 #280 [Verbose] >             match chars, step with
00:00:07 #281 [Verbose] >             | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...
00:00:07 #282 [Verbose] >
00:00:07 #283 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:07 #284 [Verbose] > #if !INTERACTIVE
00:00:07 #285 [Verbose] > namespace Polyglot
00:00:07 #286 [Verbose] > #endif
00:00:07 #287 [Verbose] >
00:00:07 #288 [Verbose] > module FileSystem =
00:00:07 #289 [Verbose] >
00:00:07 #290 [Verbose] >     open Common
00:00:07 #291 [Verbose] >
00:00:07 #292 [Verbose] >     /// ## Operators
00:00:07 #293 [Verbose] >
00:00:07 #294 [Verbose] >     module Operators =
00:00:07 #295 [Verbose] >         let inline (</>) a b =
00:00:07 #296 [Verbose] >             System.IO.Path.Combine (a, b)
00:00:07 #297 [Verbose] >
00:00:07 #298 [Verbose] >     open Operators
00:00:07 #299 [Verbose] >
00:00:07 #300 [Verbose] >     /// ## createTempDirectoryName
00:00:07 #301 [Verbose] >
00:00:07 #302 [Verbose] >     let inline createTempDirectoryName () =
00:00:07 #303 [Verbose] >         let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name
00:00:07 #304 [Verbose] >
00:00:07 #305 [Verbose] >         System.IO.Path.GetTempPath ()
00:00:07 #306 [Verbose] >         </> $"!{root}"
00:00:07 #307 [Verbose] >         </> string (newGuidFromDateTime System.DateTime.Now)
00:00:07 #308 [Verbose] >
00:00:07 #309 [Verbose] >     /// ## createTempDirectory
00:00:07 #310 [Verbose] >
00:00:07 #311 [Verbose] >     let inline createTempDirectory () =
00:00:07 #312 [Verbose] >         let tempFolder = createTempDirectoryName ()
00:00:07 #313 [Verbose] >         let result = System.IO.Directory.CreateDirectory tempFolder
00:00:07 #314 [Verbose] >
00:00:07 #315 [Verbose] >         if not result.Exists then
00:00:07 #316 [Verbose] >             let ge...
00:00:09 #317 [Verbose] >
00:00:09 #318 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:09 #319 [Verbose] > open Common
00:00:09 #320 [Verbose] > open FileSystem.Operators
00:00:09 #321 [Verbose] >
00:00:09 #322 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:09 #323 [Verbose] > let tmpSpiralPath = Path.GetTempPath () </> "!dotnet-interactive-spiral"
00:00:09 #324 [Verbose] > let linePlotsDataPath = tmpSpiralPath </> "line-plots-data"
00:00:09 #325 [Verbose] > let linePlotsSvgPath = tmpSpiralPath </> "line-plots-svg"
00:00:09 #326 [Verbose] >
00:00:09 #327 [Verbose] > [[ tmpSpiralPath; linePlotsDataPath; linePlotsSvgPath ]]
00:00:09 #328 [Verbose] > |> List.iter (fun dir -> if Directory.Exists dir |> not then
00:00:09 #329 [Verbose] > Directory.CreateDirectory dir |> ignore)
00:00:09 #330 [Verbose] >
00:00:09 #331 [Verbose] > Formatter.Register<struct (string * string * string * struct (string * float
00:00:09 #332 [Verbose] > array * float array) array)> (
00:00:09 #333 [Verbose] >     (fun struct (caption, x_desc, y_desc, ys) ->
00:00:09 #334 [Verbose] >         let json = (caption, x_desc, y_desc, ys) |> FSharp.Json.Json.serialize
00:00:09 #335 [Verbose] >         async {
00:00:09 #336 [Verbose] >             let hashHex = json |> Crypto.hashText
00:00:09 #337 [Verbose] >             let svgPath = linePlotsSvgPath </> $"{hashHex}.svg"
00:00:09 #338 [Verbose] >
00:00:09 #339 [Verbose] >             if System.IO.File.Exi...
00:00:09 #340 [Verbose] >
00:00:09 #341 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 #342 [Verbose] > // // test
00:00:09 #343 [Verbose] >
00:00:09 #344 [Verbose] > open testing
00:00:10 #345 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0362-6206-6b33709807e0/main.spi
00:00:11 #346 [Verbose] >
00:00:11 #347 [Verbose] > ╭─[ 1.85s - stdout ]───────────────────────────────────────────────────────────╮
00:00:11 #348 [Verbose] > │ ()                                                                           │
00:00:11 #349 [Verbose] > │                                                                              │
00:00:11 #350 [Verbose] > │                                                                              │
00:00:11 #351 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #352 [Verbose] >
00:00:11 #353 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #354 [Verbose] > open listm'_operators
00:00:11 #355 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0520-2066-229db2682e0a/main.spi
00:00:11 #356 [Verbose] >
00:00:11 #357 [Verbose] > ╭─[ 134.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #358 [Verbose] > │ ()                                                                           │
00:00:11 #359 [Verbose] > │                                                                              │
00:00:11 #360 [Verbose] > │                                                                              │
00:00:11 #361 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #362 [Verbose] >
00:00:11 #363 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:11 #364 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:11 #365 [Verbose] > │ ## init_series                                                               │
00:00:11 #366 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #367 [Verbose] >
00:00:11 #368 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #369 [Verbose] > // // test
00:00:11 #370 [Verbose] >
00:00:11 #371 [Verbose] > inl x : a _ f64 = am'.init_series -3 3 0.01
00:00:11 #372 [Verbose] > inl y = x |> am.map math.square
00:00:11 #373 [Verbose] > "square", "x", "y", ;[[ "square", x, y ]]
00:00:11 #374 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0534-3421-3a9598788486/main.spi
00:00:11 #375 [Verbose] >
00:00:11 #376 [Verbose] > ╭─[ 289.02ms - return value ]──────────────────────────────────────────────────╮
00:00:11 #377 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:11 #378 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:11 #379 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:11 #380 [Verbose] > │ stroke="none"/>                                                              │
00:00:11 #381 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:11 #382 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:11 #383 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:11 #384 [Verbose] > │ square                                                                       │
00:00:11 #385 [Verbose] > │ </text>                                                                      │
00:00:11 #386 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:00:11 #387 [Verbose] > │ y2="75"/>                                                                    │
00:00:11 #388 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:11 #389 [Verbose] > │ y2="75"/>                                                                    │
00:00:11 #390 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:00:11 #391 [Verbose] > │ y2="75"/>                                                                    │
00:00:11 #392 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:00:11 #393 [Verbose] > │ y2="75"/>                                                                    │
00:00:11 #394 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:00:11 #395 [Verbose] > │ ...                                                                          │
00:00:11 #396 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #397 [Verbose] >
00:00:11 #398 [Verbose] > ╭─[ 298.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:11 #399 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:11 #400 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:11 #401 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:11 #402 [Verbose] > │     let v2 : bool = v1 < 601                                                 │
00:00:11 #403 [Verbose] > │     v2                                                                       │
00:00:11 #404 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:11 #405 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:11 #406 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:11 #407 [Verbose] > │     v3                                                                       │
00:00:11 #408 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:11 #409 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:11 #410 [Verbose] > │     v0                                                                       │
00:00:11 #411 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:11 #412 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:11 #413 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (601)                      │
00:00:11 #414 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:11 #415 [Verbose] > │     while method1(v1) do                                                     │
00:00:11 #416 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:11 #417 [Verbose] > │         let v4 : float = float v3                                            │
00:00:11 #418 [Verbose] > │         let v5 : float = 0.01 * v4                                           │
00:00:11 #419 [Verbose] > │         let v6 : float = -3.0 + v5                                           │
00:00:11 #420 [Verbose] > │         v0.[int v3] <- v6                                                    │
00:00:11 #421 [Verbose] > │         let v7 : int32 = v3 + 1                                              │
00:00:11 #422 [Verbose] > │         v1.l0 <- v7                                                          │
00:00:11 #423 [Verbose] > │         ()                                                                   │
00:00:11 #424 [Verbose] > │     let v8 : int32 = v0.Length                                               │
00:00:11 #425 [Verbose] > │     let v9 : (float []) = Array.zeroCreate<float> (v8)                       │
00:00:11 #426 [Verbose] > │     let v10 : Mut0 = {l0 = 0} : Mut0                                         │
00:00:11 #427 [Verbose] > │     while method2(v8, v10) do                                                │
00:00:11 #428 [Verbose] > │         let v12 : int32 = v10.l0                                             │
00:00:11 #429 [Verbose] > │         let v13 : float = v0.[int v12]                                       │
00:00:11 #430 [Verbose] > │         let v14 : float = v13 ** 2.0                                         │
00:00:11 #431 [Verbose] > │         v9.[int v12] <- v14                                                  │
00:00:11 #432 [Verbose] > │         let v15 : int32 = v12 + 1                                            │
00:00:11 #433 [Verbose] > │         v10.l0 <- v15                                                        │
00:00:11 #434 [Verbose] > │         ()                                                                   │
00:00:11 #435 [Verbose] > │     let v16 : string = "square"                                              │
00:00:11 #436 [Verbose] > │     let v17 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:11 #437 [Verbose] > │ (v16, v0, v9)|]                                                              │
00:00:11 #438 [Verbose] > │     let v18 : (struct (string * (float []) * (float [])) []) = method3(v17)  │
00:00:11 #439 [Verbose] > │     let v19 : string = "x"                                                   │
00:00:11 #440 [Verbose] > │     let v20 : string = "y"                                                   │
00:00:11 #441 [Verbose] > │     struct (v16, v19, v20, v18)                                              │
00:00:11 #442 [Verbose] > │ method0()                                                                    │
00:00:11 #443 [Verbose] > │                                                                              │
00:00:11 #444 [Verbose] > │                                                                              │
00:00:11 #445 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:11 #446 [Verbose] >
00:00:11 #447 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:11 #448 [Verbose] > // // test
00:00:11 #449 [Verbose] >
00:00:11 #450 [Verbose] > inl x : a _ f64 = am'.init_series -10 10 0.1
00:00:11 #451 [Verbose] > inl y_sin = x |> am.map sin
00:00:11 #452 [Verbose] > inl y_cos = x |> am.map cos
00:00:11 #453 [Verbose] > "sin cos", "x", "y", ;[[ "sin", x, y_sin; "cos", x, y_cos ]]
00:00:11 #454 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0564-6441-6de204991c1c/main.spi
00:00:12 #455 [Verbose] >
00:00:12 #456 [Verbose] > ╭─[ 261.05ms - return value ]──────────────────────────────────────────────────╮
00:00:12 #457 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:12 #458 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:12 #459 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:12 #460 [Verbose] > │ stroke="none"/>                                                              │
00:00:12 #461 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:12 #462 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:12 #463 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:12 #464 [Verbose] > │ sin cos                                                                      │
00:00:12 #465 [Verbose] > │ </text>                                                                      │
00:00:12 #466 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │
00:00:12 #467 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #468 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:12 #469 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #470 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │
00:00:12 #471 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #472 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:00:12 #473 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #474 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424"        │
00:00:12 #475 [Verbose] > │ x2="10...                                                                    │
00:00:12 #476 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #477 [Verbose] >
00:00:12 #478 [Verbose] > ╭─[ 265.40ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #479 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:12 #480 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:12 #481 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:12 #482 [Verbose] > │     let v2 : bool = v1 < 201                                                 │
00:00:12 #483 [Verbose] > │     v2                                                                       │
00:00:12 #484 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:12 #485 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:12 #486 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:12 #487 [Verbose] > │     v3                                                                       │
00:00:12 #488 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:12 #489 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:12 #490 [Verbose] > │     v0                                                                       │
00:00:12 #491 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:12 #492 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:12 #493 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (201)                      │
00:00:12 #494 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:12 #495 [Verbose] > │     while method1(v1) do                                                     │
00:00:12 #496 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:12 #497 [Verbose] > │         let v4 : float = float v3                                            │
00:00:12 #498 [Verbose] > │         let v5 : float = 0.1 * v4                                            │
00:00:12 #499 [Verbose] > │         let v6 : float = -10.0 + v5                                          │
00:00:12 #500 [Verbose] > │         v0.[int v3] <- v6                                                    │
00:00:12 #501 [Verbose] > │         let v7 : int32 = v3 + 1                                              │
00:00:12 #502 [Verbose] > │         v1.l0 <- v7                                                          │
00:00:12 #503 [Verbose] > │         ()                                                                   │
00:00:12 #504 [Verbose] > │     let v8 : int32 = v0.Length                                               │
00:00:12 #505 [Verbose] > │     let v9 : (float []) = Array.zeroCreate<float> (v8)                       │
00:00:12 #506 [Verbose] > │     let v10 : Mut0 = {l0 = 0} : Mut0                                         │
00:00:12 #507 [Verbose] > │     while method2(v8, v10) do                                                │
00:00:12 #508 [Verbose] > │         let v12 : int32 = v10.l0                                             │
00:00:12 #509 [Verbose] > │         let v13 : float = v0.[int v12]                                       │
00:00:12 #510 [Verbose] > │         let v14 : float = sin v13                                            │
00:00:12 #511 [Verbose] > │         v9.[int v12] <- v14                                                  │
00:00:12 #512 [Verbose] > │         let v15 : int32 = v12 + 1                                            │
00:00:12 #513 [Verbose] > │         v10.l0 <- v15                                                        │
00:00:12 #514 [Verbose] > │         ()                                                                   │
00:00:12 #515 [Verbose] > │     let v16 : (float []) = Array.zeroCreate<float> (v8)                      │
00:00:12 #516 [Verbose] > │     let v17 : Mut0 = {l0 = 0} : Mut0                                         │
00:00:12 #517 [Verbose] > │     while method2(v8, v17) do                                                │
00:00:12 #518 [Verbose] > │         let v19 : int32 = v17.l0                                             │
00:00:12 #519 [Verbose] > │         let v20 : float = v0.[int v19]                                       │
00:00:12 #520 [Verbose] > │         let v21 : float = cos v20                                            │
00:00:12 #521 [Verbose] > │         v16.[int v19] <- v21                                                 │
00:00:12 #522 [Verbose] > │         let v22 : int32 = v19 + 1                                            │
00:00:12 #523 [Verbose] > │         v17.l0 <- v22                                                        │
00:00:12 #524 [Verbose] > │         ()                                                                   │
00:00:12 #525 [Verbose] > │     let v23 : string = "sin"                                                 │
00:00:12 #526 [Verbose] > │     let v24 : string = "cos"                                                 │
00:00:12 #527 [Verbose] > │     let v25 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:12 #528 [Verbose] > │ (v23, v0, v9); struct (v24, v0, v16)|]                                       │
00:00:12 #529 [Verbose] > │     let v26 : (struct (string * (float []) * (float [])) []) = method3(v25)  │
00:00:12 #530 [Verbose] > │     let v27 : string = "sin cos"                                             │
00:00:12 #531 [Verbose] > │     let v28 : string = "x"                                                   │
00:00:12 #532 [Verbose] > │     let v29 : string = "y"                                                   │
00:00:12 #533 [Verbose] > │     struct (v27, v28, v29, v26)                                              │
00:00:12 #534 [Verbose] > │ method0()                                                                    │
00:00:12 #535 [Verbose] > │                                                                              │
00:00:12 #536 [Verbose] > │                                                                              │
00:00:12 #537 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #538 [Verbose] >
00:00:12 #539 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #540 [Verbose] > // // test
00:00:12 #541 [Verbose] >
00:00:12 #542 [Verbose] > inl y_pos y0 vy0 ay t =
00:00:12 #543 [Verbose] >     y0 + vy0 * t + ay * (t |> math.square) / 2
00:00:12 #544 [Verbose] >
00:00:12 #545 [Verbose] > inl x : a _ f64 = am'.init_series 0 5 0.01
00:00:12 #546 [Verbose] > inl y = x |> am.map (y_pos 0 20 -9.8)
00:00:12 #547 [Verbose] > "projectile motion", "time (s)", "", ;[[ "height of projectile (m)", x, y ]]
00:00:12 #548 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0591-9148-9ef29dea2716/main.spi
00:00:12 #549 [Verbose] >
00:00:12 #550 [Verbose] > ╭─[ 182.21ms - return value ]──────────────────────────────────────────────────╮
00:00:12 #551 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:12 #552 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:12 #553 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:12 #554 [Verbose] > │ stroke="none"/>                                                              │
00:00:12 #555 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:12 #556 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:12 #557 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:12 #558 [Verbose] > │ projectile motion                                                            │
00:00:12 #559 [Verbose] > │ </text>                                                                      │
00:00:12 #560 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:12 #561 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #562 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:12 #563 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #564 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:12 #565 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #566 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:12 #567 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #568 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="42...        │
00:00:12 #569 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #570 [Verbose] >
00:00:12 #571 [Verbose] > ╭─[ 185.49ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #572 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:12 #573 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:12 #574 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:12 #575 [Verbose] > │     let v2 : bool = v1 < 501                                                 │
00:00:12 #576 [Verbose] > │     v2                                                                       │
00:00:12 #577 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:12 #578 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:12 #579 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:12 #580 [Verbose] > │     v3                                                                       │
00:00:12 #581 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:12 #582 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:12 #583 [Verbose] > │     v0                                                                       │
00:00:12 #584 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:12 #585 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:12 #586 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (501)                      │
00:00:12 #587 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:12 #588 [Verbose] > │     while method1(v1) do                                                     │
00:00:12 #589 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:12 #590 [Verbose] > │         let v4 : float = float v3                                            │
00:00:12 #591 [Verbose] > │         let v5 : float = 0.01 * v4                                           │
00:00:12 #592 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:12 #593 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:12 #594 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:12 #595 [Verbose] > │         ()                                                                   │
00:00:12 #596 [Verbose] > │     let v7 : int32 = v0.Length                                               │
00:00:12 #597 [Verbose] > │     let v8 : (float []) = Array.zeroCreate<float> (v7)                       │
00:00:12 #598 [Verbose] > │     let v9 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:12 #599 [Verbose] > │     while method2(v7, v9) do                                                 │
00:00:12 #600 [Verbose] > │         let v11 : int32 = v9.l0                                              │
00:00:12 #601 [Verbose] > │         let v12 : float = v0.[int v11]                                       │
00:00:12 #602 [Verbose] > │         let v13 : float = 20.0 * v12                                         │
00:00:12 #603 [Verbose] > │         let v14 : float = v12 ** 2.0                                         │
00:00:12 #604 [Verbose] > │         let v15 : float = -9.8 * v14                                         │
00:00:12 #605 [Verbose] > │         let v16 : float = v15 / 2.0                                          │
00:00:12 #606 [Verbose] > │         let v17 : float = v13 + v16                                          │
00:00:12 #607 [Verbose] > │         v8.[int v11] <- v17                                                  │
00:00:12 #608 [Verbose] > │         let v18 : int32 = v11 + 1                                            │
00:00:12 #609 [Verbose] > │         v9.l0 <- v18                                                         │
00:00:12 #610 [Verbose] > │         ()                                                                   │
00:00:12 #611 [Verbose] > │     let v19 : string = "height of projectile (m)"                            │
00:00:12 #612 [Verbose] > │     let v20 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:12 #613 [Verbose] > │ (v19, v0, v8)|]                                                              │
00:00:12 #614 [Verbose] > │     let v21 : (struct (string * (float []) * (float [])) []) = method3(v20)  │
00:00:12 #615 [Verbose] > │     let v22 : string = "projectile motion"                                   │
00:00:12 #616 [Verbose] > │     let v23 : string = "time (s)"                                            │
00:00:12 #617 [Verbose] > │     let v24 : string = ""                                                    │
00:00:12 #618 [Verbose] > │     struct (v22, v23, v24, v21)                                              │
00:00:12 #619 [Verbose] > │ method0()                                                                    │
00:00:12 #620 [Verbose] > │                                                                              │
00:00:12 #621 [Verbose] > │                                                                              │
00:00:12 #622 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #623 [Verbose] >
00:00:12 #624 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #625 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #626 [Verbose] > │ ## velocity_cf                                                               │
00:00:12 #627 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #628 [Verbose] >
00:00:12 #629 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #630 [Verbose] > type mass = f64
00:00:12 #631 [Verbose] > type time = f64
00:00:12 #632 [Verbose] > type position = f64
00:00:12 #633 [Verbose] > type velocity = f64
00:00:12 #634 [Verbose] > type force = f64
00:00:12 #635 [Verbose] >
00:00:12 #636 [Verbose] > type velocity_cf = mass -> velocity -> list force -> (time -> velocity)
00:00:12 #637 [Verbose] >
00:00:12 #638 [Verbose] > inl velocity_cf m v0 fs =
00:00:12 #639 [Verbose] >     inl f_net = fs |> listm'.sum
00:00:12 #640 [Verbose] >     inl a0 = f_net / m
00:00:12 #641 [Verbose] >     inl v t = v0 + a0 * t
00:00:12 #642 [Verbose] >     v
00:00:12 #643 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0610-1079-1d44f5ebfd35/main.spi
00:00:12 #644 [Verbose] >
00:00:12 #645 [Verbose] > ╭─[ 137.42ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #646 [Verbose] > │ ()                                                                           │
00:00:12 #647 [Verbose] > │                                                                              │
00:00:12 #648 [Verbose] > │                                                                              │
00:00:12 #649 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #650 [Verbose] >
00:00:12 #651 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #652 [Verbose] > // // test
00:00:12 #653 [Verbose] >
00:00:12 #654 [Verbose] > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 0
00:00:12 #655 [Verbose] > |> _equal 0.6
00:00:12 #656 [Verbose] >
00:00:12 #657 [Verbose] > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 1
00:00:12 #658 [Verbose] > |> _equal 0.2
00:00:12 #659 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0624-2437-2fd611864e7c/main.spi
00:00:12 #660 [Verbose] >
00:00:12 #661 [Verbose] > ╭─[ 148.26ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #662 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:12 #663 [Verbose] > │     let v0 : string = $"__expect / actual: %A{0.6} / expected: %A{0.6}"      │
00:00:12 #664 [Verbose] > │     let v1 : string = $"__expect / actual: %A{0.2} / expected: %A{0.2}"      │
00:00:12 #665 [Verbose] > │     ()                                                                       │
00:00:12 #666 [Verbose] > │ method0()                                                                    │
00:00:12 #667 [Verbose] > │                                                                              │
00:00:12 #668 [Verbose] > │                                                                              │
00:00:12 #669 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #670 [Verbose] >
00:00:12 #671 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #672 [Verbose] > // // test
00:00:12 #673 [Verbose] >
00:00:12 #674 [Verbose] > inl x = am'.init_series 0 4 0.1
00:00:12 #675 [Verbose] > inl y = x |> am.map (velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]])
00:00:12 #676 [Verbose] > "car on an air track", "time (s)", "", ;[[ "velocity of car (m/s)", x, y ]]
00:00:12 #677 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0639-3936-37531e4b10bd/main.spi
00:00:12 #678 [Verbose] >
00:00:12 #679 [Verbose] > ╭─[ 168.70ms - return value ]──────────────────────────────────────────────────╮
00:00:12 #680 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:12 #681 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:12 #682 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:12 #683 [Verbose] > │ stroke="none"/>                                                              │
00:00:12 #684 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:12 #685 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:12 #686 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:12 #687 [Verbose] > │ car on an air track                                                          │
00:00:12 #688 [Verbose] > │ </text>                                                                      │
00:00:12 #689 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │
00:00:12 #690 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #691 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:12 #692 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #693 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │
00:00:12 #694 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #695 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:00:12 #696 [Verbose] > │ y2="75"/>                                                                    │
00:00:12 #697 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1=...          │
00:00:12 #698 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #699 [Verbose] >
00:00:12 #700 [Verbose] > ╭─[ 171.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #701 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:12 #702 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:12 #703 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:12 #704 [Verbose] > │     let v2 : bool = v1 < 41                                                  │
00:00:12 #705 [Verbose] > │     v2                                                                       │
00:00:12 #706 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:12 #707 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:12 #708 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:12 #709 [Verbose] > │     v3                                                                       │
00:00:12 #710 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:12 #711 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:12 #712 [Verbose] > │     v0                                                                       │
00:00:12 #713 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:12 #714 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:12 #715 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (41)                       │
00:00:12 #716 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:12 #717 [Verbose] > │     while method1(v1) do                                                     │
00:00:12 #718 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:12 #719 [Verbose] > │         let v4 : float = float v3                                            │
00:00:12 #720 [Verbose] > │         let v5 : float = 0.1 * v4                                            │
00:00:12 #721 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:12 #722 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:12 #723 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:12 #724 [Verbose] > │         ()                                                                   │
00:00:12 #725 [Verbose] > │     let v7 : int32 = v0.Length                                               │
00:00:12 #726 [Verbose] > │     let v8 : (float []) = Array.zeroCreate<float> (v7)                       │
00:00:12 #727 [Verbose] > │     let v9 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:12 #728 [Verbose] > │     while method2(v7, v9) do                                                 │
00:00:12 #729 [Verbose] > │         let v11 : int32 = v9.l0                                              │
00:00:12 #730 [Verbose] > │         let v12 : float = v0.[int v11]                                       │
00:00:12 #731 [Verbose] > │         let v13 : float = -0.39999999999999997 * v12                         │
00:00:12 #732 [Verbose] > │         let v14 : float = 0.6 + v13                                          │
00:00:12 #733 [Verbose] > │         v8.[int v11] <- v14                                                  │
00:00:12 #734 [Verbose] > │         let v15 : int32 = v11 + 1                                            │
00:00:12 #735 [Verbose] > │         v9.l0 <- v15                                                         │
00:00:12 #736 [Verbose] > │         ()                                                                   │
00:00:12 #737 [Verbose] > │     let v16 : string = "velocity of car (m/s)"                               │
00:00:12 #738 [Verbose] > │     let v17 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:12 #739 [Verbose] > │ (v16, v0, v8)|]                                                              │
00:00:12 #740 [Verbose] > │     let v18 : (struct (string * (float []) * (float [])) []) = method3(v17)  │
00:00:12 #741 [Verbose] > │     let v19 : string = "car on an air track"                                 │
00:00:12 #742 [Verbose] > │     let v20 : string = "time (s)"                                            │
00:00:12 #743 [Verbose] > │     let v21 : string = ""                                                    │
00:00:12 #744 [Verbose] > │     struct (v19, v20, v21, v18)                                              │
00:00:12 #745 [Verbose] > │ method0()                                                                    │
00:00:12 #746 [Verbose] > │                                                                              │
00:00:12 #747 [Verbose] > │                                                                              │
00:00:12 #748 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #749 [Verbose] >
00:00:12 #750 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #751 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #752 [Verbose] > │ ## derivative                                                                │
00:00:12 #753 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #754 [Verbose] >
00:00:12 #755 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #756 [Verbose] > type derivative = (f64 -> f64) -> f64 -> f64
00:00:12 #757 [Verbose] >
00:00:12 #758 [Verbose] > inl derivative dt : derivative =
00:00:12 #759 [Verbose] >     fun x t =>
00:00:12 #760 [Verbose] >         (x (t + dt / 2) - x (t - dt / 2)) / dt
00:00:12 #761 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0657-5704-598cb341c943/main.spi
00:00:12 #762 [Verbose] >
00:00:12 #763 [Verbose] > ╭─[ 137.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #764 [Verbose] > │ ()                                                                           │
00:00:12 #765 [Verbose] > │                                                                              │
00:00:12 #766 [Verbose] > │                                                                              │
00:00:12 #767 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #768 [Verbose] >
00:00:12 #769 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #770 [Verbose] > // // test
00:00:12 #771 [Verbose] >
00:00:12 #772 [Verbose] > derivative 1 (fun x => x ** 4 / 4) 1 - 1
00:00:12 #773 [Verbose] > |> _almost_equal 0.25
00:00:12 #774 [Verbose] >
00:00:12 #775 [Verbose] > derivative 0.001 (fun x => x ** 4 / 4) 1 - 1
00:00:12 #776 [Verbose] > |> _almost_equal 0.0000002499998827953931
00:00:12 #777 [Verbose] >
00:00:12 #778 [Verbose] > derivative 0.000001 (fun x => x ** 4 / 4) 1 - 1
00:00:12 #779 [Verbose] > |> _almost_equal 0.000000000001000088900582341
00:00:12 #780 [Verbose] >
00:00:12 #781 [Verbose] > derivative 0.000000001 (fun x => x ** 4 / 4) 1 - 1
00:00:12 #782 [Verbose] > |> _almost_equal 0.00000008274037099909037
00:00:12 #783 [Verbose] >
00:00:12 #784 [Verbose] > derivative 0.000000000001 (fun x => x ** 4 / 4) 1 - 1
00:00:12 #785 [Verbose] > |> _almost_equal 0.00008890058234101161
00:00:12 #786 [Verbose] >
00:00:12 #787 [Verbose] > derivative 0.000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:00:12 #788 [Verbose] > |> _almost_equal -0.0007992778373592246
00:00:12 #789 [Verbose] >
00:00:12 #790 [Verbose] > derivative 0.000000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:00:12 #791 [Verbose] > |> _almost_equal -1
00:00:12 #792 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0670-7081-7a3d8a51c7ec/main.spi
00:00:12 #793 [Verbose] >
00:00:12 #794 [Verbose] > ╭─[ 145.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 #795 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:12 #796 [Verbose] > │     let v0 : string = $"__expect / actual: %A{0.25} / expected: %A{0.25}"    │
00:00:12 #797 [Verbose] > │     let v1 : string = $"__expect / actual: %A{2.499998827953931E-07} /       │
00:00:12 #798 [Verbose] > │ expected: %A{2.499998827953931E-07}"                                         │
00:00:12 #799 [Verbose] > │     let v2 : string = $"__expect / actual: %A{1.000088900582341E-12} /       │
00:00:12 #800 [Verbose] > │ expected: %A{1.000088900582341E-12}"                                         │
00:00:12 #801 [Verbose] > │     let v3 : string = $"__expect / actual: %A{8.274037099909037E-08} /       │
00:00:12 #802 [Verbose] > │ expected: %A{8.274037099909037E-08}"                                         │
00:00:12 #803 [Verbose] > │     let v4 : string = $"__expect / actual: %A{8.890058234101161E-05} /       │
00:00:12 #804 [Verbose] > │ expected: %A{8.890058234101161E-05}"                                         │
00:00:12 #805 [Verbose] > │     let v5 : string = $"__expect / actual: %A{-0.0007992778373592246} /      │
00:00:12 #806 [Verbose] > │ expected: %A{-0.0007992778373592246}"                                        │
00:00:12 #807 [Verbose] > │     let v6 : string = $"__expect / actual: %A{-1.0} / expected: %A{-1.0}"    │
00:00:12 #808 [Verbose] > │     ()                                                                       │
00:00:12 #809 [Verbose] > │ method0()                                                                    │
00:00:12 #810 [Verbose] > │                                                                              │
00:00:12 #811 [Verbose] > │                                                                              │
00:00:12 #812 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #813 [Verbose] >
00:00:12 #814 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 #815 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 #816 [Verbose] > │ ## integration                                                               │
00:00:12 #817 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 #818 [Verbose] >
00:00:12 #819 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:12 #820 [Verbose] > type integration = (f64 -> f64) -> f64 -> f64 -> f64
00:00:12 #821 [Verbose] >
00:00:12 #822 [Verbose] > inl integral dt : integration =
00:00:12 #823 [Verbose] >     fun f a b =>
00:00:12 #824 [Verbose] >         inl rec loop t y =
00:00:12 #825 [Verbose] >             if t < b
00:00:12 #826 [Verbose] >             then loop (t + dt) (y + f t * dt)
00:00:12 #827 [Verbose] >             else t, y
00:00:12 #828 [Verbose] >         loop (a + dt / 2) 0
00:00:12 #829 [Verbose] >         |> snd
00:00:13 #830 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0685-8558-825e9ba7762e/main.spi
00:00:13 #831 [Verbose] >
00:00:13 #832 [Verbose] > ╭─[ 131.91ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #833 [Verbose] > │ ()                                                                           │
00:00:13 #834 [Verbose] > │                                                                              │
00:00:13 #835 [Verbose] > │                                                                              │
00:00:13 #836 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #837 [Verbose] >
00:00:13 #838 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #839 [Verbose] > // // test
00:00:13 #840 [Verbose] >
00:00:13 #841 [Verbose] > integral 0.01 math.square 0 1
00:00:13 #842 [Verbose] > |> _almost_equal 0.33332500000000004
00:00:13 #843 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0698-9877-9e20a12847ce/main.spi
00:00:13 #844 [Verbose] >
00:00:13 #845 [Verbose] > ╭─[ 137.99ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #846 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:13 #847 [Verbose] > │     let v0 : string = $"__expect / actual: %A{0.3333250000000004} /          │
00:00:13 #848 [Verbose] > │ expected: %A{0.33332500000000004}"                                           │
00:00:13 #849 [Verbose] > │     ()                                                                       │
00:00:13 #850 [Verbose] > │ method0()                                                                    │
00:00:13 #851 [Verbose] > │                                                                              │
00:00:13 #852 [Verbose] > │                                                                              │
00:00:13 #853 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #854 [Verbose] >
00:00:13 #855 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #856 [Verbose] > inl integral' dt : integration =
00:00:13 #857 [Verbose] >     fun f a b =>
00:00:13 #858 [Verbose] >         listm'.init_series (a + dt / 2) (b - dt / 2) dt
00:00:13 #859 [Verbose] >         |> listm.map (f >> (*) dt)
00:00:13 #860 [Verbose] >         |> listm'.sum
00:00:13 #861 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0712-1266-1bf10d1fd973/main.spi
00:00:13 #862 [Verbose] >
00:00:13 #863 [Verbose] > ╭─[ 141.63ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #864 [Verbose] > │ ()                                                                           │
00:00:13 #865 [Verbose] > │                                                                              │
00:00:13 #866 [Verbose] > │                                                                              │
00:00:13 #867 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #868 [Verbose] >
00:00:13 #869 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #870 [Verbose] > // // test
00:00:13 #871 [Verbose] >
00:00:13 #872 [Verbose] > integral' 0.1 math.square 0 1
00:00:13 #873 [Verbose] > |> _almost_equal (integral 0.1 math.square 0 1)
00:00:13 #874 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0726-2685-2a791110d7ac/main.spi
00:00:13 #875 [Verbose] >
00:00:13 #876 [Verbose] > ╭─[ 135.67ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #877 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:13 #878 [Verbose] > │     let v0 : string = $"__expect / actual: %A{0.3325000000000001} /          │
00:00:13 #879 [Verbose] > │ expected: %A{0.33249999999999996}"                                           │
00:00:13 #880 [Verbose] > │     ()                                                                       │
00:00:13 #881 [Verbose] > │ method0()                                                                    │
00:00:13 #882 [Verbose] > │                                                                              │
00:00:13 #883 [Verbose] > │                                                                              │
00:00:13 #884 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #885 [Verbose] >
00:00:13 #886 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #887 [Verbose] > inl integral'' dt : integration =
00:00:13 #888 [Verbose] >     fun f a b =>
00:00:13 #889 [Verbose] >         am'.init_series (a + dt / 2) (b - dt / 2) dt
00:00:13 #890 [Verbose] >         |> am.map (f >> (*) dt)
00:00:13 #891 [Verbose] >         |> am'.sum
00:00:13 #892 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0740-4047-4dfee91df859/main.spi
00:00:13 #893 [Verbose] >
00:00:13 #894 [Verbose] > ╭─[ 130.62ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #895 [Verbose] > │ ()                                                                           │
00:00:13 #896 [Verbose] > │                                                                              │
00:00:13 #897 [Verbose] > │                                                                              │
00:00:13 #898 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #899 [Verbose] >
00:00:13 #900 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #901 [Verbose] > // // test
00:00:13 #902 [Verbose] >
00:00:13 #903 [Verbose] > integral'' 0.01 math.square 0 1
00:00:13 #904 [Verbose] > |> _almost_equal (integral 0.01 math.square 0 1)
00:00:13 #905 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0753-5357-5c69d9944395/main.spi
00:00:13 #906 [Verbose] >
00:00:13 #907 [Verbose] > ╭─[ 199.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:13 #908 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:13 #909 [Verbose] > │ and Mut1 = {mutable l0 : int32; mutable l1 : float}                          │
00:00:13 #910 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:13 #911 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:13 #912 [Verbose] > │     let v2 : bool = v1 < 100                                                 │
00:00:13 #913 [Verbose] > │     v2                                                                       │
00:00:13 #914 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:13 #915 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:13 #916 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:13 #917 [Verbose] > │     v3                                                                       │
00:00:13 #918 [Verbose] > │ and method3 (v0 : int32, v1 : Mut1) : bool =                                 │
00:00:13 #919 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:13 #920 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:13 #921 [Verbose] > │     v3                                                                       │
00:00:13 #922 [Verbose] > │ and method0 () : unit =                                                      │
00:00:13 #923 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (100)                      │
00:00:13 #924 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:13 #925 [Verbose] > │     while method1(v1) do                                                     │
00:00:13 #926 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:13 #927 [Verbose] > │         let v4 : float = float v3                                            │
00:00:13 #928 [Verbose] > │         let v5 : float = 0.01 * v4                                           │
00:00:13 #929 [Verbose] > │         let v6 : float = 0.005 + v5                                          │
00:00:13 #930 [Verbose] > │         v0.[int v3] <- v6                                                    │
00:00:13 #931 [Verbose] > │         let v7 : int32 = v3 + 1                                              │
00:00:13 #932 [Verbose] > │         v1.l0 <- v7                                                          │
00:00:13 #933 [Verbose] > │         ()                                                                   │
00:00:13 #934 [Verbose] > │     let v8 : int32 = v0.Length                                               │
00:00:13 #935 [Verbose] > │     let v9 : (float []) = Array.zeroCreate<float> (v8)                       │
00:00:13 #936 [Verbose] > │     let v10 : Mut0 = {l0 = 0} : Mut0                                         │
00:00:13 #937 [Verbose] > │     while method2(v8, v10) do                                                │
00:00:13 #938 [Verbose] > │         let v12 : int32 = v10.l0                                             │
00:00:13 #939 [Verbose] > │         let v13 : float = v0.[int v12]                                       │
00:00:13 #940 [Verbose] > │         let v14 : float = v13 ** 2.0                                         │
00:00:13 #941 [Verbose] > │         let v15 : float = 0.01 * v14                                         │
00:00:13 #942 [Verbose] > │         v9.[int v12] <- v15                                                  │
00:00:13 #943 [Verbose] > │         let v16 : int32 = v12 + 1                                            │
00:00:13 #944 [Verbose] > │         v10.l0 <- v16                                                        │
00:00:13 #945 [Verbose] > │         ()                                                                   │
00:00:13 #946 [Verbose] > │     let v17 : int32 = v9.Length                                              │
00:00:13 #947 [Verbose] > │     let v18 : Mut1 = {l0 = 0; l1 = 0.0} : Mut1                               │
00:00:13 #948 [Verbose] > │     while method3(v17, v18) do                                               │
00:00:13 #949 [Verbose] > │         let v20 : int32 = v18.l0                                             │
00:00:13 #950 [Verbose] > │         let v21 : float = v18.l1                                             │
00:00:13 #951 [Verbose] > │         let v22 : float = v9.[int v20]                                       │
00:00:13 #952 [Verbose] > │         let v23 : float = v21 + v22                                          │
00:00:13 #953 [Verbose] > │         let v24 : int32 = v20 + 1                                            │
00:00:13 #954 [Verbose] > │         v18.l0 <- v24                                                        │
00:00:13 #955 [Verbose] > │         v18.l1 <- v23                                                        │
00:00:13 #956 [Verbose] > │         ()                                                                   │
00:00:13 #957 [Verbose] > │     let v25 : float = v18.l1                                                 │
00:00:13 #958 [Verbose] > │     let v26 : string = $"__expect / actual: %A{v25} / expected:              │
00:00:13 #959 [Verbose] > │ %A{0.3333250000000004}"                                                      │
00:00:13 #960 [Verbose] > │     let v27 : float = 0.3333250000000004 - v25                               │
00:00:13 #961 [Verbose] > │     let v28 : float =  -v27                                                  │
00:00:13 #962 [Verbose] > │     let v29 : bool = v27 >= v28                                              │
00:00:13 #963 [Verbose] > │     let v30 : float =                                                        │
00:00:13 #964 [Verbose] > │         if v29 then                                                          │
00:00:13 #965 [Verbose] > │             v27                                                              │
00:00:13 #966 [Verbose] > │         else                                                                 │
00:00:13 #967 [Verbose] > │             v28                                                              │
00:00:13 #968 [Verbose] > │     let v31 : bool = v30 < 1E-08                                             │
00:00:13 #969 [Verbose] > │     let v32 : bool = v31 = false                                             │
00:00:13 #970 [Verbose] > │     if v32 then                                                              │
00:00:13 #971 [Verbose] > │         failwith<unit> v26                                                   │
00:00:13 #972 [Verbose] > │ method0()                                                                    │
00:00:13 #973 [Verbose] > │                                                                              │
00:00:13 #974 [Verbose] > │                                                                              │
00:00:13 #975 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #976 [Verbose] >
00:00:13 #977 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 #978 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 #979 [Verbose] > │ ## anti_derivative                                                           │
00:00:13 #980 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 #981 [Verbose] >
00:00:13 #982 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:13 #983 [Verbose] > inl anti_derivative dt v0 a t =
00:00:13 #984 [Verbose] >     v0 + integral' dt a 0 t
00:00:13 #985 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0774-7408-7564256de1c2/main.spi
00:00:14 #986 [Verbose] >
00:00:14 #987 [Verbose] > ╭─[ 133.68ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #988 [Verbose] > │ ()                                                                           │
00:00:14 #989 [Verbose] > │                                                                              │
00:00:14 #990 [Verbose] > │                                                                              │
00:00:14 #991 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #992 [Verbose] >
00:00:14 #993 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #994 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #995 [Verbose] > │ ## velocity_ft                                                               │
00:00:14 #996 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #997 [Verbose] >
00:00:14 #998 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #999 [Verbose] > type velocity_ft = mass -> velocity -> list (time -> force) -> (time ->
00:00:14 #1000 [Verbose] > velocity)
00:00:14 #1001 [Verbose] >
00:00:14 #1002 [Verbose] > inl velocity_ft dt : velocity_ft =
00:00:14 #1003 [Verbose] >     fun m v0 fs =>
00:00:14 #1004 [Verbose] >         inl f_net t = fs |> listm.map (fun f => f t) |> listm'.sum
00:00:14 #1005 [Verbose] >         inl a t = f_net t / m
00:00:14 #1006 [Verbose] >         anti_derivative dt v0 a
00:00:14 #1007 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0787-8757-80388cab9753/main.spi
00:00:14 #1008 [Verbose] >
00:00:14 #1009 [Verbose] > ╭─[ 131.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #1010 [Verbose] > │ ()                                                                           │
00:00:14 #1011 [Verbose] > │                                                                              │
00:00:14 #1012 [Verbose] > │                                                                              │
00:00:14 #1013 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1014 [Verbose] >
00:00:14 #1015 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #1016 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #1017 [Verbose] > │ ## position_ft                                                               │
00:00:14 #1018 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1019 [Verbose] >
00:00:14 #1020 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #1021 [Verbose] > type position_ft = mass -> position -> velocity -> list (time -> force) -> (time
00:00:14 #1022 [Verbose] > -> position)
00:00:14 #1023 [Verbose] >
00:00:14 #1024 [Verbose] > inl position_ft dt : position_ft =
00:00:14 #1025 [Verbose] >     fun m x0 v0 fs =>
00:00:14 #1026 [Verbose] >         velocity_ft dt m v0 fs
00:00:14 #1027 [Verbose] >         |> anti_derivative dt x0
00:00:14 #1028 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0800-0082-0014f0dff918/main.spi
00:00:14 #1029 [Verbose] >
00:00:14 #1030 [Verbose] > ╭─[ 159.14ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #1031 [Verbose] > │ ()                                                                           │
00:00:14 #1032 [Verbose] > │                                                                              │
00:00:14 #1033 [Verbose] > │                                                                              │
00:00:14 #1034 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1035 [Verbose] >
00:00:14 #1036 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #1037 [Verbose] > // // test
00:00:14 #1038 [Verbose] >
00:00:14 #1039 [Verbose] > inl pedal_coast (t : time) : force =
00:00:14 #1040 [Verbose] >     inl t_cycle = 20
00:00:14 #1041 [Verbose] >     inl n_complete : i32 = t / t_cycle |> conv
00:00:14 #1042 [Verbose] >     inl remainder = t - conv n_complete * t_cycle
00:00:14 #1043 [Verbose] >     if remainder > 0 && remainder < 10
00:00:14 #1044 [Verbose] >     then 10
00:00:14 #1045 [Verbose] >     else 0
00:00:14 #1046 [Verbose] >
00:00:14 #1047 [Verbose] > inl x = am'.init_series -5 45 0.1
00:00:14 #1048 [Verbose] > inl y = x |> am.map pedal_coast
00:00:14 #1049 [Verbose] > "child pedaling then coasting", "time (s)", "", ;[[ "force on bike (N)", x, y ]]
00:00:14 #1050 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0816-1678-180d759eca69/main.spi
00:00:14 #1051 [Verbose] >
00:00:14 #1052 [Verbose] > ╭─[ 180.20ms - return value ]──────────────────────────────────────────────────╮
00:00:14 #1053 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:14 #1054 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:14 #1055 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:14 #1056 [Verbose] > │ stroke="none"/>                                                              │
00:00:14 #1057 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:14 #1058 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:14 #1059 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:14 #1060 [Verbose] > │ child pedaling then coasting                                                 │
00:00:14 #1061 [Verbose] > │ </text>                                                                      │
00:00:14 #1062 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:14 #1063 [Verbose] > │ y2="75"/>                                                                    │
00:00:14 #1064 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:14 #1065 [Verbose] > │ y2="75"/>                                                                    │
00:00:14 #1066 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:14 #1067 [Verbose] > │ y2="75"/>                                                                    │
00:00:14 #1068 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:14 #1069 [Verbose] > │ y2="75"/>                                                                    │
00:00:14 #1070 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1=...                   │
00:00:14 #1071 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1072 [Verbose] >
00:00:14 #1073 [Verbose] > ╭─[ 184.02ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #1074 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:14 #1075 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:14 #1076 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:14 #1077 [Verbose] > │     let v2 : bool = v1 < 501                                                 │
00:00:14 #1078 [Verbose] > │     v2                                                                       │
00:00:14 #1079 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:14 #1080 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:14 #1081 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:14 #1082 [Verbose] > │     v3                                                                       │
00:00:14 #1083 [Verbose] > │ and method3 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:14 #1084 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:14 #1085 [Verbose] > │     v0                                                                       │
00:00:14 #1086 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:14 #1087 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:14 #1088 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (501)                      │
00:00:14 #1089 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:14 #1090 [Verbose] > │     while method1(v1) do                                                     │
00:00:14 #1091 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:14 #1092 [Verbose] > │         let v4 : float = float v3                                            │
00:00:14 #1093 [Verbose] > │         let v5 : float = 0.1 * v4                                            │
00:00:14 #1094 [Verbose] > │         let v6 : float = -5.0 + v5                                           │
00:00:14 #1095 [Verbose] > │         v0.[int v3] <- v6                                                    │
00:00:14 #1096 [Verbose] > │         let v7 : int32 = v3 + 1                                              │
00:00:14 #1097 [Verbose] > │         v1.l0 <- v7                                                          │
00:00:14 #1098 [Verbose] > │         ()                                                                   │
00:00:14 #1099 [Verbose] > │     let v8 : int32 = v0.Length                                               │
00:00:14 #1100 [Verbose] > │     let v9 : (float []) = Array.zeroCreate<float> (v8)                       │
00:00:14 #1101 [Verbose] > │     let v10 : Mut0 = {l0 = 0} : Mut0                                         │
00:00:14 #1102 [Verbose] > │     while method2(v8, v10) do                                                │
00:00:14 #1103 [Verbose] > │         let v12 : int32 = v10.l0                                             │
00:00:14 #1104 [Verbose] > │         let v13 : float = v0.[int v12]                                       │
00:00:14 #1105 [Verbose] > │         let v14 : float = v13 / 20.0                                         │
00:00:14 #1106 [Verbose] > │         let v15 : int32 = int32 v14                                          │
00:00:14 #1107 [Verbose] > │         let v16 : float = float v15                                          │
00:00:14 #1108 [Verbose] > │         let v17 : float = v16 * 20.0                                         │
00:00:14 #1109 [Verbose] > │         let v18 : float = v13 - v17                                          │
00:00:14 #1110 [Verbose] > │         let v19 : bool = v18 > 0.0                                           │
00:00:14 #1111 [Verbose] > │         let v21 : bool =                                                     │
00:00:14 #1112 [Verbose] > │             if v19 then                                                      │
00:00:14 #1113 [Verbose] > │                 let v20 : bool = v18 < 10.0                                  │
00:00:14 #1114 [Verbose] > │                 v20                                                          │
00:00:14 #1115 [Verbose] > │             else                                                             │
00:00:14 #1116 [Verbose] > │                 false                                                        │
00:00:14 #1117 [Verbose] > │         let v22 : float =                                                    │
00:00:14 #1118 [Verbose] > │             if v21 then                                                      │
00:00:14 #1119 [Verbose] > │                 10.0                                                         │
00:00:14 #1120 [Verbose] > │             else                                                             │
00:00:14 #1121 [Verbose] > │                 0.0                                                          │
00:00:14 #1122 [Verbose] > │         v9.[int v12] <- v22                                                  │
00:00:14 #1123 [Verbose] > │         let v23 : int32 = v12 + 1                                            │
00:00:14 #1124 [Verbose] > │         v10.l0 <- v23                                                        │
00:00:14 #1125 [Verbose] > │         ()                                                                   │
00:00:14 #1126 [Verbose] > │     let v24 : string = "force on bike (N)"                                   │
00:00:14 #1127 [Verbose] > │     let v25 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:14 #1128 [Verbose] > │ (v24, v0, v9)|]                                                              │
00:00:14 #1129 [Verbose] > │     let v26 : (struct (string * (float []) * (float [])) []) = method3(v25)  │
00:00:14 #1130 [Verbose] > │     let v27 : string = "child pedaling then coasting"                        │
00:00:14 #1131 [Verbose] > │     let v28 : string = "time (s)"                                            │
00:00:14 #1132 [Verbose] > │     let v29 : string = ""                                                    │
00:00:14 #1133 [Verbose] > │     struct (v27, v28, v29, v26)                                              │
00:00:14 #1134 [Verbose] > │ method0()                                                                    │
00:00:14 #1135 [Verbose] > │                                                                              │
00:00:14 #1136 [Verbose] > │                                                                              │
00:00:14 #1137 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1138 [Verbose] >
00:00:14 #1139 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #1140 [Verbose] > // // test
00:00:14 #1141 [Verbose] >
00:00:14 #1142 [Verbose] > inl x = am'.init_series -5 45 1
00:00:14 #1143 [Verbose] > inl y = x |> am.map (position_ft 0.1f64 20 0 0 [[ pedal_coast ]])
00:00:14 #1144 [Verbose] > "child pedaling then coasting", "time (s)", "", ;[[ "position of bike (m)", x, y
00:00:14 #1145 [Verbose] > ]]
00:00:14 #1146 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0835-3569-3dd6b6d87349/main.spi
00:00:14 #1147 [Verbose] >
00:00:14 #1148 [Verbose] > ╭─[ 444.34ms - return value ]──────────────────────────────────────────────────╮
00:00:14 #1149 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:14 #1150 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:14 #1151 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:14 #1152 [Verbose] > │ stroke="none"/>                                                              │
00:00:14 #1153 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:14 #1154 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:14 #1155 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:14 #1156 [Verbose] > │ child pedaling then coasting                                                 │
00:00:14 #1157 [Verbose] > │ </text>                                                                      │
00:00:14 #1158 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:14 #1159 [Verbose] > │ y2="75"/>                                                                    │
00:00:14 #1160 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:14 #1161 [Verbose] > │ y2="75"/>                                                                    │
00:00:14 #1162 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:14 #1163 [Verbose] > │ y2="75"/>                                                                    │
00:00:14 #1164 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:14 #1165 [Verbose] > │ y2="75"/>                                                                    │
00:00:14 #1166 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1=...                   │
00:00:14 #1167 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1168 [Verbose] >
00:00:14 #1169 [Verbose] > ╭─[ 450.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:14 #1170 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:14 #1171 [Verbose] > │ and UH0 =                                                                    │
00:00:14 #1172 [Verbose] > │     | UH0_0 of float * UH0                                                   │
00:00:14 #1173 [Verbose] > │     | UH0_1                                                                  │
00:00:14 #1174 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:14 #1175 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:14 #1176 [Verbose] > │     let v2 : bool = v1 < 51                                                  │
00:00:14 #1177 [Verbose] > │     v2                                                                       │
00:00:14 #1178 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:14 #1179 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:14 #1180 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:14 #1181 [Verbose] > │     v3                                                                       │
00:00:14 #1182 [Verbose] > │ and method3 (v0 : float, v1 : float) : UH0 =                                 │
00:00:14 #1183 [Verbose] > │     let v2 : bool = v1 < v0                                                  │
00:00:14 #1184 [Verbose] > │     if v2 then                                                               │
00:00:14 #1185 [Verbose] > │         let v3 : float = 0.1 * v1                                            │
00:00:14 #1186 [Verbose] > │         let v4 : float = 0.05 + v3                                           │
00:00:14 #1187 [Verbose] > │         let v5 : float = v1 + 1.0                                            │
00:00:14 #1188 [Verbose] > │         let v6 : UH0 = method3(v0, v5)                                       │
00:00:14 #1189 [Verbose] > │         UH0_0(v4, v6)                                                        │
00:00:14 #1190 [Verbose] > │     else                                                                     │
00:00:14 #1191 [Verbose] > │         UH0_1                                                                │
00:00:14 #1192 [Verbose] > │ and method5 (v0 : UH0, v1 : UH0) : UH0 =                                     │
00:00:14 #1193 [Verbose] > │     match v0 with                                                            │
00:00:14 #1194 [Verbose] > │     | UH0_0(v2, v3) -> (* Cons *)                                            │
00:00:14 #1195 [Verbose] > │         let v4 : UH0 = method5(v3, v1)                                       │
00:00:14 #1196 [Verbose] > │         let v5 : float = v2 / 20.0                                           │
00:00:14 #1197 [Verbose] > │         let v6 : int32 = int32 v5                                            │
00:00:14 #1198 [Verbose] > │         let v7 : float = float v6                                            │
00:00:14 #1199 [Verbose] > │         let v8 : float = v7 * 20.0                                           │
00:00:14 #1200 [Verbose] > │         let v9 : float = v2 - v8                                             │
00:00:14 #1201 [Verbose] > │         let v10 : bool = v9 > 0.0                                            │
00:00:14 #1202 [Verbose] > │         let v12 : bool =                                                     │
00:00:14 #1203 [Verbose] > │             if v10 then                                                      │
00:00:14 #1204 [Verbose] > │                 let v11 : bool = v9 < 10.0                                   │
00:00:14 #1205 [Verbose] > │                 v11                                                          │
00:00:14 #1206 [Verbose] > │             else                                                             │
00:00:14 #1207 [Verbose] > │                 false                                                        │
00:00:14 #1208 [Verbose] > │         let v13 : float =                                                    │
00:00:14 #1209 [Verbose] > │             if v12 then                                                      │
00:00:14 #1210 [Verbose] > │                 10.0                                                         │
00:00:14 #1211 [Verbose] > │             else                                                             │
00:00:14 #1212 [Verbose] > │                 0.0                                                          │
00:00:14 #1213 [Verbose] > │         let v14 : float = v13 / 20.0                                         │
00:00:14 #1214 [Verbose] > │         let v15 : float = 0.1 * v14                                          │
00:00:14 #1215 [Verbose] > │         UH0_0(v15, v4)                                                       │
00:00:14 #1216 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:14 #1217 [Verbose] > │         v1                                                                   │
00:00:14 #1218 [Verbose] > │ and method6 (v0 : UH0, v1 : float) : float =                                 │
00:00:14 #1219 [Verbose] > │     match v0 with                                                            │
00:00:14 #1220 [Verbose] > │     | UH0_0(v2, v3) -> (* Cons *)                                            │
00:00:14 #1221 [Verbose] > │         let v4 : float = v1 + v2                                             │
00:00:14 #1222 [Verbose] > │         method6(v3, v4)                                                      │
00:00:14 #1223 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:14 #1224 [Verbose] > │         v1                                                                   │
00:00:14 #1225 [Verbose] > │ and method4 (v0 : UH0, v1 : UH0) : UH0 =                                     │
00:00:14 #1226 [Verbose] > │     match v0 with                                                            │
00:00:14 #1227 [Verbose] > │     | UH0_0(v2, v3) -> (* Cons *)                                            │
00:00:14 #1228 [Verbose] > │         let v4 : UH0 = method4(v3, v1)                                       │
00:00:14 #1229 [Verbose] > │         let v5 : float = v2 - 0.05                                           │
00:00:14 #1230 [Verbose] > │         let v6 : float = v5 - 0.05                                           │
00:00:14 #1231 [Verbose] > │         let v7 : float = v6 / 0.1                                            │
00:00:14 #1232 [Verbose] > │         let v8 : float = v7 + 1.0                                            │
00:00:14 #1233 [Verbose] > │         let v9 : float = 0.0                                                 │
00:00:14 #1234 [Verbose] > │         let v10 : UH0 = method3(v8, v9)                                      │
00:00:14 #1235 [Verbose] > │         let v11 : UH0 = UH0_1                                                │
00:00:14 #1236 [Verbose] > │         let v12 : UH0 = method5(v10, v11)                                    │
00:00:14 #1237 [Verbose] > │         let v13 : float = 0.0                                                │
00:00:14 #1238 [Verbose] > │         let v14 : float = method6(v12, v13)                                  │
00:00:14 #1239 [Verbose] > │         let v15 : float = 0.1 * v14                                          │
00:00:14 #1240 [Verbose] > │         UH0_0(v15, v4)                                                       │
00:00:14 #1241 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:14 #1242 [Verbose] > │         v1                                                                   │
00:00:14 #1243 [Verbose] > │ and method7 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:14 #1244 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:14 #1245 [Verbose] > │     v0                                                                       │
00:00:14 #1246 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:14 #1247 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:14 #1248 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (51)                       │
00:00:14 #1249 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:14 #1250 [Verbose] > │     while method1(v1) do                                                     │
00:00:14 #1251 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:14 #1252 [Verbose] > │         let v4 : float = float v3                                            │
00:00:14 #1253 [Verbose] > │         let v5 : float = -5.0 + v4                                           │
00:00:14 #1254 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:14 #1255 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:14 #1256 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:14 #1257 [Verbose] > │         ()                                                                   │
00:00:14 #1258 [Verbose] > │     let v7 : int32 = v0.Length                                               │
00:00:14 #1259 [Verbose] > │     let v8 : (float []) = Array.zeroCreate<float> (v7)                       │
00:00:14 #1260 [Verbose] > │     let v9 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:14 #1261 [Verbose] > │     while method2(v7, v9) do                                                 │
00:00:14 #1262 [Verbose] > │         let v11 : int32 = v9.l0                                              │
00:00:14 #1263 [Verbose] > │         let v12 : float = v0.[int v11]                                       │
00:00:14 #1264 [Verbose] > │         let v13 : float = v12 - 0.05                                         │
00:00:14 #1265 [Verbose] > │         let v14 : float = v13 - 0.05                                         │
00:00:14 #1266 [Verbose] > │         let v15 : float = v14 / 0.1                                          │
00:00:14 #1267 [Verbose] > │         let v16 : float = v15 + 1.0                                          │
00:00:14 #1268 [Verbose] > │         let v17 : float = 0.0                                                │
00:00:14 #1269 [Verbose] > │         let v18 : UH0 = method3(v16, v17)                                    │
00:00:14 #1270 [Verbose] > │         let v19 : UH0 = UH0_1                                                │
00:00:14 #1271 [Verbose] > │         let v20 : UH0 = method4(v18, v19)                                    │
00:00:14 #1272 [Verbose] > │         let v21 : float = 0.0                                                │
00:00:14 #1273 [Verbose] > │         let v22 : float = method6(v20, v21)                                  │
00:00:14 #1274 [Verbose] > │         v8.[int v11] <- v22                                                  │
00:00:14 #1275 [Verbose] > │         let v23 : int32 = v11 + 1                                            │
00:00:14 #1276 [Verbose] > │         v9.l0 <- v23                                                         │
00:00:14 #1277 [Verbose] > │         ()                                                                   │
00:00:14 #1278 [Verbose] > │     let v24 : string = "position of bike (m)"                                │
00:00:14 #1279 [Verbose] > │     let v25 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:14 #1280 [Verbose] > │ (v24, v0, v8)|]                                                              │
00:00:14 #1281 [Verbose] > │     let v26 : (struct (string * (float []) * (float [])) []) = method7(v25)  │
00:00:14 #1282 [Verbose] > │     let v27 : string = "child pedaling then coasting"                        │
00:00:14 #1283 [Verbose] > │     let v28 : string = "time (s)"                                            │
00:00:14 #1284 [Verbose] > │     let v29 : string = ""                                                    │
00:00:14 #1285 [Verbose] > │     struct (v27, v28, v29, v26)                                              │
00:00:14 #1286 [Verbose] > │ method0()                                                                    │
00:00:14 #1287 [Verbose] > │                                                                              │
00:00:14 #1288 [Verbose] > │                                                                              │
00:00:14 #1289 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1290 [Verbose] >
00:00:14 #1291 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:14 #1292 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:14 #1293 [Verbose] > │ ## velocity_fv                                                               │
00:00:14 #1294 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:14 #1295 [Verbose] >
00:00:14 #1296 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:14 #1297 [Verbose] > inl newton_second_v m fs v0 =
00:00:14 #1298 [Verbose] >     fs |> listm.map (fun f => f v0) |> listm'.sum |> fun x => x / m
00:00:14 #1299 [Verbose] >
00:00:14 #1300 [Verbose] > inl update_velocity dt m fs v0 =
00:00:14 #1301 [Verbose] >     v0 + newton_second_v m fs v0 * dt
00:00:14 #1302 [Verbose] >
00:00:14 #1303 [Verbose] > inl velocity_fv dt m v0 fs t =
00:00:14 #1304 [Verbose] >     stream.iterate (update_velocity dt m fs) v0
00:00:14 #1305 [Verbose] >     |> stream.try_item (t / dt |> math.round |> abs)
00:00:14 #1306 [Verbose] >     |> optionm'.default_value 0
00:00:15 #1307 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0882-8270-81560867c835/main.spi
00:00:15 #1308 [Verbose] >
00:00:15 #1309 [Verbose] > ╭─[ 151.23ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 #1310 [Verbose] > │ ()                                                                           │
00:00:15 #1311 [Verbose] > │                                                                              │
00:00:15 #1312 [Verbose] > │                                                                              │
00:00:15 #1313 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1314 [Verbose] >
00:00:15 #1315 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 #1316 [Verbose] > inl f_air drag rho area v =
00:00:15 #1317 [Verbose] >     -drag * rho * area * abs v * v / 2
00:00:15 #1318 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0897-9752-9dd4ffad9a60/main.spi
00:00:15 #1319 [Verbose] >
00:00:15 #1320 [Verbose] > ╭─[ 147.94ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 #1321 [Verbose] > │ ()                                                                           │
00:00:15 #1322 [Verbose] > │                                                                              │
00:00:15 #1323 [Verbose] > │                                                                              │
00:00:15 #1324 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1325 [Verbose] >
00:00:15 #1326 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 #1327 [Verbose] > // // test
00:00:15 #1328 [Verbose] >
00:00:15 #1329 [Verbose] > inl x = am'.init_series 0 60 0.5
00:00:15 #1330 [Verbose] > inl y = x |> am.map (velocity_fv 1 70 0f64 [[ fun _ => 100; f_air 2 1.225 0.6
00:00:15 #1331 [Verbose] > ]])
00:00:15 #1332 [Verbose] > "bike velocity", "time (s)", "", ;[[ "velocity of bike (m/s)", x, y ]]
00:00:15 #1333 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0912-1241-1774e62c4b67/main.spi
00:00:15 #1334 [Verbose] >
00:00:15 #1335 [Verbose] > ╭─[ 467.34ms - return value ]──────────────────────────────────────────────────╮
00:00:15 #1336 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:15 #1337 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:15 #1338 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:15 #1339 [Verbose] > │ stroke="none"/>                                                              │
00:00:15 #1340 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:15 #1341 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:15 #1342 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:15 #1343 [Verbose] > │ bike velocity                                                                │
00:00:15 #1344 [Verbose] > │ </text>                                                                      │
00:00:15 #1345 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:00:15 #1346 [Verbose] > │ y2="75"/>                                                                    │
00:00:15 #1347 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:15 #1348 [Verbose] > │ y2="75"/>                                                                    │
00:00:15 #1349 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:00:15 #1350 [Verbose] > │ y2="75"/>                                                                    │
00:00:15 #1351 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:00:15 #1352 [Verbose] > │ y2="75"/>                                                                    │
00:00:15 #1353 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x...    │
00:00:15 #1354 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1355 [Verbose] >
00:00:15 #1356 [Verbose] > ╭─[ 478.50ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 #1357 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:15 #1358 [Verbose] > │ and UH0 =                                                                    │
00:00:15 #1359 [Verbose] > │     | UH0_0 of float * (unit -> UH0)                                         │
00:00:15 #1360 [Verbose] > │     | UH0_1                                                                  │
00:00:15 #1361 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:15 #1362 [Verbose] > │     | US0_0                                                                  │
00:00:15 #1363 [Verbose] > │     | US0_1 of f1_0 : float                                                  │
00:00:15 #1364 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:15 #1365 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:15 #1366 [Verbose] > │     let v2 : bool = v1 < 121                                                 │
00:00:15 #1367 [Verbose] > │     v2                                                                       │
00:00:15 #1368 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:15 #1369 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:15 #1370 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:15 #1371 [Verbose] > │     v3                                                                       │
00:00:15 #1372 [Verbose] > │ and closure129 () () : UH0 =                                                 │
00:00:15 #1373 [Verbose] > │     let v0 : (unit -> UH0) = closure129()                                    │
00:00:15 #1374 [Verbose] > │     UH0_0(11.664236870396083, v0)                                            │
00:00:15 #1375 [Verbose] > │ and closure128 () () : UH0 =                                                 │
00:00:15 #1376 [Verbose] > │     let v0 : (unit -> UH0) = closure129()                                    │
00:00:15 #1377 [Verbose] > │     UH0_0(11.664236870396081, v0)                                            │
00:00:15 #1378 [Verbose] > │ and closure127 () () : UH0 =                                                 │
00:00:15 #1379 [Verbose] > │     let v0 : (unit -> UH0) = closure128()                                    │
00:00:15 #1380 [Verbose] > │     UH0_0(11.66423687039608, v0)                                             │
00:00:15 #1381 [Verbose] > │ and closure126 () () : UH0 =                                                 │
00:00:15 #1382 [Verbose] > │     let v0 : (unit -> UH0) = closure127()                                    │
00:00:15 #1383 [Verbose] > │     UH0_0(11.664236870396078, v0)                                            │
00:00:15 #1384 [Verbose] > │ and closure125 () () : UH0 =                                                 │
00:00:15 #1385 [Verbose] > │     let v0 : (unit -> UH0) = closure126()                                    │
00:00:15 #1386 [Verbose] > │     UH0_0(11.664236870396074, v0)                                            │
00:00:15 #1387 [Verbose] > │ and closure124 () () : UH0 =                                                 │
00:00:15 #1388 [Verbose] > │     let v0 : (unit -> UH0) = closure125()                                    │
00:00:15 #1389 [Verbose] > │     UH0_0(11.66423687039607, v0)                                             │
00:00:15 #1390 [Verbose] > │ and closure123 () () : UH0 =                                                 │
00:00:15 #1391 [Verbose] > │     let v0 : (unit -> UH0) = closure124()                                    │
00:00:15 #1392 [Verbose] > │     UH0_0(11.664236870396065, v0)                                            │
00:00:15 #1393 [Verbose] > │ and closure122 () () : UH0 =                                                 │
00:00:15 #1394 [Verbose] > │     let v0 : (unit -> UH0) = closure123()                                    │
00:00:15 #1395 [Verbose] > │     UH0_0(11.664236870396058, v0)                                            │
00:00:15 #1396 [Verbose] > │ and closure121 () () : UH0 =                                                 │
00:00:15 #1397 [Verbose] > │     let v0 : (unit -> UH0) = closure122()                                    │
00:00:15 #1398 [Verbose] > │     UH0_0(11.66423687039605, v0)                                             │
00:00:15 #1399 [Verbose] > │ and closure120 () () : UH0 =                                                 │
00:00:15 #1400 [Verbose] > │     let v0 : (unit -> UH0) = closure121()                                    │
00:00:15 #1401 [Verbose] > │     UH0_0(11.664236870396037, v0)                                            │
00:00:15 #1402 [Verbose] > │ and closure119 () () : UH0 =                                                 │
00:00:15 #1403 [Verbose] > │     let v0 : (unit -> UH0) = closure120()                                    │
00:00:15 #1404 [Verbose] > │     UH0_0(11.66423687039602, v0)                                             │
00:00:15 #1405 [Verbose] > │ and closure118 () () : UH0 =                                                 │
00:00:15 #1406 [Verbose] > │     let v0 : (unit -> UH0) = closure119()                                    │
00:00:15 #1407 [Verbose] > │     UH0_0(11.664236870396, v0)                                               │
00:00:15 #1408 [Verbose] > │ and closure117 () () : UH0 =                                                 │
00:00:15 #1409 [Verbose] > │     let v0 : (unit -> UH0) = closure118()                                    │
00:00:15 #1410 [Verbose] > │     UH0_0(11.664236870395971, v0)                                            │
00:00:15 #1411 [Verbose] > │ and closure116 () () : UH0 =                                                 │
00:00:15 #1412 [Verbose] > │     let v0 : (unit -> UH0) = closure117()                                    │
00:00:15 #1413 [Verbose] > │     UH0_0(11.664236870395934, v0)                                            │
00:00:15 #1414 [Verbose] > │ and closure115 () () : UH0 =                                                 │
00:00:15 #1415 [Verbose] > │     let v0 : (unit -> UH0) = closure116()                                    │
00:00:15 #1416 [Verbose] > │     UH0_0(11.664236870395884, v0)                                            │
00:00:15 #1417 [Verbose] > │ and closure114 () () : UH0 =                                                 │
00:00:15 #1418 [Verbose] > │     let v0 : (unit -> UH0) = closure115()                                    │
00:00:15 #1419 [Verbose] > │     UH0_0(11.664236870395818, v0)                                            │
00:00:15 #1420 [Verbose] > │ and closure113 () () : UH0 =                                                 │
00:00:15 #1421 [Verbose] > │     let v0 : (unit -> UH0) = closure114()                                    │
00:00:15 #1422 [Verbose] > │     UH0_0(11.664236870395731, v0)                                            │
00:00:15 #1423 [Verbose] > │ and closure112 () () : UH0 =                                                 │
00:00:15 #1424 [Verbose] > │     let v0 : (unit -> UH0) = closure113()                                    │
00:00:15 #1425 [Verbose] > │     UH0_0(11.664236870395616, v0)                                            │
00:00:15 #1426 [Verbose] > │ and closure111 () () : UH0 =                                                 │
00:00:15 #1427 [Verbose] > │     let v0 : (unit -> UH0) = closure112()                                    │
00:00:15 #1428 [Verbose] > │     UH0_0(11.664236870395463, v0)                                            │
00:00:15 #1429 [Verbose] > │ and closure110 () () : UH0 =                                                 │
00:00:15 #1430 [Verbose] > │     let v0 : (unit -> UH0) = closure111()                                    │
00:00:15 #1431 [Verbose] > │     UH0_0(11.66423687039526, v0)                                             │
00:00:15 #1432 [Verbose] > │ and closure109 () () : UH0 =                                                 │
00:00:15 #1433 [Verbose] > │     let v0 : (unit -> UH0) = closure110()                                    │
00:00:15 #1434 [Verbose] > │     UH0_0(11.664236870394992, v0)                                            │
00:00:15 #1435 [Verbose] > │ and closure108 () () : UH0 =                                                 │
00:00:15 #1436 [Verbose] > │     let v0 : (unit -> UH0) = closure109()                                    │
00:00:15 #1437 [Verbose] > │     UH0_0(11.664236870394637, v0)                                            │
00:00:15 #1438 [Verbose] > │ and closure107 () () : UH0 =                                                 │
00:00:15 #1439 [Verbose] > │     let v0 : (unit -> UH0) = closure108()                                    │
00:00:15 #1440 [Verbose] > │     UH0_0(11.664236870394168, v0)                                            │
00:00:15 #1441 [Verbose] > │ and closure106 () () : UH0 =                                                 │
00:00:15 #1442 [Verbose] > │     let v0 : (unit -> UH0) = closure107()                                    │
00:00:15 #1443 [Verbose] > │     UH0_0(11.664236870393546, v0)                                            │
00:00:15 #1444 [Verbose] > │ and closure105 () () : UH0 =                                                 │
00:00:15 #1445 [Verbose] > │     let v0 : (unit -> UH0) = closure106()                                    │
00:00:15 #1446 [Verbose] > │     UH0_0(11.664236870392722, v0)                                            │
00:00:15 #1447 [Verbose] > │ and closure104 () () : UH0 =                                                 │
00:00:15 #1448 [Verbose] > │     let v0 : (unit -> UH0) = closure105()                                    │
00:00:15 #1449 [Verbose] > │     UH0_0(11.664236870391631, v0)                                            │
00:00:15 #1450 [Verbose] > │ and closure103 () () : UH0 =                                                 │
00:00:15 #1451 [Verbose] > │     let v0 : (unit -> UH0) = closure104()                                    │
00:00:15 #1452 [Verbose] > │     UH0_0(11.664236870390187, v0)                                            │
00:00:15 #1453 [Verbose] > │ and closure102 () () : UH0 =                                                 │
00:00:15 #1454 [Verbose] > │     let v0 : (unit -> UH0) = closure103()                                    │
00:00:15 #1455 [Verbose] > │     UH0_0(11.664236870388274, v0)                                            │
00:00:15 #1456 [Verbose] > │ and closure101 () () : UH0 =                                                 │
00:00:15 #1457 [Verbose] > │     let v0 : (unit -> UH0) = closure102()                                    │
00:00:15 #1458 [Verbose] > │     UH0_0(11.66423687038574, v0)                                             │
00:00:15 #1459 [Verbose] > │ and closure100 () () : UH0 =                                                 │
00:00:15 #1460 [Verbose] > │     let v0 : (unit -> UH0) = closure101()                                    │
00:00:15 #1461 [Verbose] > │     UH0_0(11.664236870382384, v0)                                            │
00:00:15 #1462 [Verbose] > │ and closure99 () () : UH0 =                                                  │
00:00:15 #1463 [Verbose] > │     let v0 : (unit -> UH0) = closure100()                                    │
00:00:15 #1464 [Verbose] > │     UH0_0(11.664236870377938, v0)                                            │
00:00:15 #1465 [Verbose] > │ and closure98 () () : UH0 =                                                  │
00:00:15 #1466 [Verbose] > │     let v0 : (unit -> UH0) = closure99()                                     │
00:00:15 #1467 [Verbose] > │     UH0_0(11.66423687037205, v0)                                             │
00:00:15 #1468 [Verbose] > │ and closure97 () () : UH0 =                                                  │
00:00:15 #1469 [Verbose] > │     let v0 : (unit -> UH0) = closure98()                                     │
00:00:15 #1470 [Verbose] > │     UH0_0(11.664236870364254, v0)                                            │
00:00:15 #1471 [Verbose] > │ and closure96 () () : UH0 =                                                  │
00:00:15 #1472 [Verbose] > │     let v0 : (unit -> UH0) = closure97()                                     │
00:00:15 #1473 [Verbose] > │     UH0_0(11.664236870353927, v0)                                            │
00:00:15 #1474 [Verbose] > │ and closure95 () () : UH0 =                                                  │
00:00:15 #1475 [Verbose] > │     let v0 : (unit -> UH0) = closure96()                                     │
00:00:15 #1476 [Verbose] > │     UH0_0(11.664236870340249, v0)                                            │
00:00:15 #1477 [Verbose] > │ and closure94 () () : UH0 =                                                  │
00:00:15 #1478 [Verbose] > │     let v0 : (unit -> UH0) = closure95()                                     │
00:00:15 #1479 [Verbose] > │     UH0_0(11.664236870322135, v0)                                            │
00:00:15 #1480 [Verbose] > │ and closure93 () () : UH0 =                                                  │
00:00:15 #1481 [Verbose] > │     let v0 : (unit -> UH0) = closure94()                                     │
00:00:15 #1482 [Verbose] > │     UH0_0(11.664236870298145, v0)                                            │
00:00:15 #1483 [Verbose] > │ and closure92 () () : UH0 =                                                  │
00:00:15 #1484 [Verbose] > │     let v0 : (unit -> UH0) = closure93()                                     │
00:00:15 #1485 [Verbose] > │     UH0_0(11.664236870266372, v0)                                            │
00:00:15 #1486 [Verbose] > │ and closure91 () () : UH0 =                                                  │
00:00:15 #1487 [Verbose] > │     let v0 : (unit -> UH0) = closure92()                                     │
00:00:15 #1488 [Verbose] > │     UH0_0(11.664236870224292, v0)                                            │
00:00:15 #1489 [Verbose] > │ and closure90 () () : UH0 =                                                  │
00:00:15 #1490 [Verbose] > │     let v0 : (unit -> UH0) = closure91()                                     │
00:00:15 #1491 [Verbose] > │     UH0_0(11.66423687016856, v0)                                             │
00:00:15 #1492 [Verbose] > │ and closure89 () () : UH0 =                                                  │
00:00:15 #1493 [Verbose] > │     let v0 : (unit -> UH0) = closure90()                                     │
00:00:15 #1494 [Verbose] > │     UH0_0(11.664236870094747, v0)                                            │
00:00:15 #1495 [Verbose] > │ and closure88 () () : UH0 =                                                  │
00:00:15 #1496 [Verbose] > │     let v0 : (unit -> UH0) = closure89()                                     │
00:00:15 #1497 [Verbose] > │     UH0_0(11.664236869996989, v0)                                            │
00:00:15 #1498 [Verbose] > │ and closure87 () () : UH0 =                                                  │
00:00:15 #1499 [Verbose] > │     let v0 : (unit -> UH0) = closure88()                                     │
00:00:15 #1500 [Verbose] > │     UH0_0(11.664236869867516, v0)                                            │
00:00:15 #1501 [Verbose] > │ and closure86 () () : UH0 =                                                  │
00:00:15 #1502 [Verbose] > │     let v0 : (unit -> UH0) = closure87()                                     │
00:00:15 #1503 [Verbose] > │     UH0_0(11.66423686969604, v0)                                             │
00:00:15 #1504 [Verbose] > │ and closure85 () () : UH0 =                                                  │
00:00:15 #1505 [Verbose] > │     let v0 : (unit -> UH0) = closure86()                                     │
00:00:15 #1506 [Verbose] > │     UH0_0(11.664236869468937, v0)                                            │
00:00:15 #1507 [Verbose] > │ and closure84 () () : UH0 =                                                  │
00:00:15 #1508 [Verbose] > │     let v0 : (unit -> UH0) = closure85()                                     │
00:00:15 #1509 [Verbose] > │     UH0_0(11.664236869168157, v0)                                            │
00:00:15 #1510 [Verbose] > │ and closure83 () () : UH0 =                                                  │
00:00:15 #1511 [Verbose] > │     let v0 : (unit -> UH0) = closure84()                                     │
00:00:15 #1512 [Verbose] > │     UH0_0(11.6642368687698, v0)                                              │
00:00:15 #1513 [Verbose] > │ and closure82 () () : UH0 =                                                  │
00:00:15 #1514 [Verbose] > │     let v0 : (unit -> UH0) = closure83()                                     │
00:00:15 #1515 [Verbose] > │     UH0_0(11.664236868242211, v0)                                            │
00:00:15 #1516 [Verbose] > │ and closure81 () () : UH0 =                                                  │
00:00:15 #1517 [Verbose] > │     let v0 : (unit -> UH0) = closure82()                                     │
00:00:15 #1518 [Verbose] > │     UH0_0(11.664236867543465, v0)                                            │
00:00:15 #1519 [Verbose] > │ and closure80 () () : UH0 =                                                  │
00:00:15 #1520 [Verbose] > │     let v0 : (unit -> UH0) = closure81()                                     │
00:00:15 #1521 [Verbose] > │     UH0_0(11.664236866618037, v0)                                            │
00:00:15 #1522 [Verbose] > │ and closure79 () () : UH0 =                                                  │
00:00:15 #1523 [Verbose] > │     let v0 : (unit -> UH0) = closure80()                                     │
00:00:15 #1524 [Verbose] > │     UH0_0(11.664236865392386, v0)                                            │
00:00:15 #1525 [Verbose] > │ and closure78 () () : UH0 =                                                  │
00:00:15 #1526 [Verbose] > │     let v0 : (unit -> UH0) = closure79()                                     │
00:00:15 #1527 [Verbose] > │     UH0_0(11.664236863769117, v0)                                            │
00:00:15 #1528 [Verbose] > │ and closure77 () () : UH0 =                                                  │
00:00:15 #1529 [Verbose] > │     let v0 : (unit -> UH0) = closure78()                                     │
00:00:15 #1530 [Verbose] > │     UH0_0(11.664236861619237, v0)                                            │
00:00:15 #1531 [Verbose] > │ and closure76 () () : UH0 =                                                  │
00:00:15 #1532 [Verbose] > │     let v0 : (unit -> UH0) = closure77()                                     │
00:00:15 #1533 [Verbose] > │     UH0_0(11.664236858771906, v0)                                            │
00:00:15 #1534 [Verbose] > │ and closure75 () () : UH0 =                                                  │
00:00:15 #1535 [Verbose] > │     let v0 : (unit -> UH0) = closure76()                                     │
00:00:15 #1536 [Verbose] > │     UH0_0(11.66423685500086, v0)                                             │
00:00:15 #1537 [Verbose] > │ and closure74 () () : UH0 =                                                  │
00:00:15 #1538 [Verbose] > │     let v0 : (unit -> UH0) = closure75()                                     │
00:00:15 #1539 [Verbose] > │     UH0_0(11.664236850006436, v0)                                            │
00:00:15 #1540 [Verbose] > │ and closure73 () () : UH0 =                                                  │
00:00:15 #1541 [Verbose] > │     let v0 : (unit -> UH0) = closure74()                                     │
00:00:15 #1542 [Verbose] > │     UH0_0(11.664236843391752, v0)                                            │
00:00:15 #1543 [Verbose] > │ and closure72 () () : UH0 =                                                  │
00:00:15 #1544 [Verbose] > │     let v0 : (unit -> UH0) = closure73()                                     │
00:00:15 #1545 [Verbose] > │     UH0_0(11.664236834631172, v0)                                            │
00:00:15 #1546 [Verbose] > │ and closure71 () () : UH0 =                                                  │
00:00:15 #1547 [Verbose] > │     let v0 : (unit -> UH0) = closure72()                                     │
00:00:15 #1548 [Verbose] > │     UH0_0(11.66423682302854, v0)                                             │
00:00:15 #1549 [Verbose] > │ and closure70 () () : UH0 =                                                  │
00:00:15 #1550 [Verbose] > │     let v0 : (unit -> UH0) = closure71()                                     │
00:00:15 #1551 [Verbose] > │     UH0_0(11.664236807661855, v0)                                            │
00:00:15 #1552 [Verbose] > │ and closure69 () () : UH0 =                                                  │
00:00:15 #1553 [Verbose] > │     let v0 : (unit -> UH0) = closure70()                                     │
00:00:15 #1554 [Verbose] > │     UH0_0(11.664236787310005, v0)                                            │
00:00:15 #1555 [Verbose] > │ and closure68 () () : UH0 =                                                  │
00:00:15 #1556 [Verbose] > │     let v0 : (unit -> UH0) = closure69()                                     │
00:00:15 #1557 [Verbose] > │     UH0_0(11.664236760355733, v0)                                            │
00:00:15 #1558 [Verbose] > │ and closure67 () () : UH0 =                                                  │
00:00:15 #1559 [Verbose] > │     let v0 : (unit -> UH0) = closure68()                                     │
00:00:15 #1560 [Verbose] > │     UH0_0(11.664236724657123, v0)                                            │
00:00:15 #1561 [Verbose] > │ and closure66 () () : UH0 =                                                  │
00:00:15 #1562 [Verbose] > │     let v0 : (unit -> UH0) = closure67()                                     │
00:00:15 #1563 [Verbose] > │     UH0_0(11.66423667737739, v0)                                             │
00:00:15 #1564 [Verbose] > │ and closure65 () () : UH0 =                                                  │
00:00:15 #1565 [Verbose] > │     let v0 : (unit -> UH0) = closure66()                                     │
00:00:15 #1566 [Verbose] > │     UH0_0(11.664236614759462, v0)                                            │
00:00:15 #1567 [Verbose] > │ and closure64 () () : UH0 =                                                  │
00:00:15 #1568 [Verbose] > │     let v0 : (unit -> UH0) = closure65()                                     │
00:00:15 #1569 [Verbose] > │     UH0_0(11.664236531827415, v0)                                            │
00:00:15 #1570 [Verbose] > │ and closure63 () () : UH0 =                                                  │
00:00:15 #1571 [Verbose] > │     let v0 : (unit -> UH0) = closure64()                                     │
00:00:15 #1572 [Verbose] > │     UH0_0(11.664236421991067, v0)                                            │
00:00:15 #1573 [Verbose] > │ and closure62 () () : UH0 =                                                  │
00:00:15 #1574 [Verbose] > │     let v0 : (unit -> UH0) = closure63()                                     │
00:00:15 #1575 [Verbose] > │     UH0_0(11.664236276522294, v0)                                            │
00:00:15 #1576 [Verbose] > │ and closure61 () () : UH0 =                                                  │
00:00:15 #1577 [Verbose] > │     let v0 : (unit -> UH0) = closure62()                                     │
00:00:15 #1578 [Verbose] > │     UH0_0(11.664236083861448, v0)                                            │
00:00:15 #1579 [Verbose] > │ and closure60 () () : UH0 =                                                  │
00:00:15 #1580 [Verbose] > │     let v0 : (unit -> UH0) = closure61()                                     │
00:00:15 #1581 [Verbose] > │     UH0_0(11.664235828698772, v0)                                            │
00:00:15 #1582 [Verbose] > │ and closure59 () () : UH0 =                                                  │
00:00:15 #1583 [Verbose] > │     let v0 : (unit -> UH0) = closure60()                                     │
00:00:15 #1584 [Verbose] > │     UH0_0(11.664235490757811, v0)                                            │
00:00:15 #1585 [Verbose] > │ and closure58 () () : UH0 =                                                  │
00:00:15 #1586 [Verbose] > │     let v0 : (unit -> UH0) = closure59()                                     │
00:00:15 #1587 [Verbose] > │     UH0_0(11.664235043184158, v0)                                            │
00:00:15 #1588 [Verbose] > │ and closure57 () () : UH0 =                                                  │
00:00:15 #1589 [Verbose] > │     let v0 : (unit -> UH0) = closure58()                                     │
00:00:15 #1590 [Verbose] > │     UH0_0(11.66423445041147, v0)                                             │
00:00:15 #1591 [Verbose] > │ and closure56 () () : UH0 =                                                  │
00:00:15 #1592 [Verbose] > │     let v0 : (unit -> UH0) = closure57()                                     │
00:00:15 #1593 [Verbose] > │     UH0_0(11.664233665335203, v0)                                            │
00:00:15 #1594 [Verbose] > │ and closure55 () () : UH0 =                                                  │
00:00:15 #1595 [Verbose] > │     let v0 : (unit -> UH0) = closure56()                                     │
00:00:15 #1596 [Verbose] > │     UH0_0(11.664232625569467, v0)                                            │
00:00:15 #1597 [Verbose] > │ and closure54 () () : UH0 =                                                  │
00:00:15 #1598 [Verbose] > │     let v0 : (unit -> UH0) = closure55()                                     │
00:00:15 #1599 [Verbose] > │     UH0_0(11.664231248489562, v0)                                            │
00:00:15 #1600 [Verbose] > │ and closure53 () () : UH0 =                                                  │
00:00:15 #1601 [Verbose] > │     let v0 : (unit -> UH0) = closure54()                                     │
00:00:15 #1602 [Verbose] > │     UH0_0(11.664229424666262, v0)                                            │
00:00:15 #1603 [Verbose] > │ and closure52 () () : UH0 =                                                  │
00:00:15 #1604 [Verbose] > │     let v0 : (unit -> UH0) = closure53()                                     │
00:00:15 #1605 [Verbose] > │     UH0_0(11.66422700917009, v0)                                             │
00:00:15 #1606 [Verbose] > │ and closure51 () () : UH0 =                                                  │
00:00:15 #1607 [Verbose] > │     let v0 : (unit -> UH0) = closure52()                                     │
00:00:15 #1608 [Verbose] > │     UH0_0(11.664223810054642, v0)                                            │
00:00:15 #1609 [Verbose] > │ and closure50 () () : UH0 =                                                  │
00:00:15 #1610 [Verbose] > │     let v0 : (unit -> UH0) = closure51()                                     │
00:00:15 #1611 [Verbose] > │     UH0_0(11.664219573103773, v0)                                            │
00:00:15 #1612 [Verbose] > │ and closure49 () () : UH0 =                                                  │
00:00:15 #1613 [Verbose] > │     let v0 : (unit -> UH0) = closure50()                                     │
00:00:15 #1614 [Verbose] > │     UH0_0(11.6642139616307, v0)                                              │
00:00:15 #1615 [Verbose] > │ and closure48 () () : UH0 =                                                  │
00:00:15 #1616 [Verbose] > │     let v0 : (unit -> UH0) = closure49()                                     │
00:00:15 #1617 [Verbose] > │     UH0_0(11.664206529723813, v0)                                            │
00:00:15 #1618 [Verbose] > │ and closure47 () () : UH0 =                                                  │
00:00:15 #1619 [Verbose] > │     let v0 : (unit -> UH0) = closure48()                                     │
00:00:15 #1620 [Verbose] > │     UH0_0(11.664196686813408, v0)                                            │
00:00:15 #1621 [Verbose] > │ and closure46 () () : UH0 =                                                  │
00:00:15 #1622 [Verbose] > │     let v0 : (unit -> UH0) = closure47()                                     │
00:00:15 #1623 [Verbose] > │     UH0_0(11.664183650743945, v0)                                            │
00:00:15 #1624 [Verbose] > │ and closure45 () () : UH0 =                                                  │
00:00:15 #1625 [Verbose] > │     let v0 : (unit -> UH0) = closure46()                                     │
00:00:15 #1626 [Verbose] > │     UH0_0(11.664166385623318, v0)                                            │
00:00:15 #1627 [Verbose] > │ and closure44 () () : UH0 =                                                  │
00:00:15 #1628 [Verbose] > │     let v0 : (unit -> UH0) = closure45()                                     │
00:00:15 #1629 [Verbose] > │     UH0_0(11.664143519511356, v0)                                            │
00:00:15 #1630 [Verbose] > │ and closure43 () () : UH0 =                                                  │
00:00:15 #1631 [Verbose] > │     let v0 : (unit -> UH0) = closure44()                                     │
00:00:15 #1632 [Verbose] > │     UH0_0(11.664113235408447, v0)                                            │
00:00:15 #1633 [Verbose] > │ and closure42 () () : UH0 =                                                  │
00:00:15 #1634 [Verbose] > │     let v0 : (unit -> UH0) = closure43()                                     │
00:00:15 #1635 [Verbose] > │     UH0_0(11.66407312688485, v0)                                             │
00:00:15 #1636 [Verbose] > │ and closure41 () () : UH0 =                                                  │
00:00:15 #1637 [Verbose] > │     let v0 : (unit -> UH0) = closure42()                                     │
00:00:15 #1638 [Verbose] > │     UH0_0(11.664020006883758, v0)                                            │
00:00:15 #1639 [Verbose] > │ and closure40 () () : UH0 =                                                  │
00:00:15 #1640 [Verbose] > │     let v0 : (unit -> UH0) = closure41()                                     │
00:00:15 #1641 [Verbose] > │     UH0_0(11.663949654514292, v0)                                            │
00:00:15 #1642 [Verbose] > │ and closure39 () () : UH0 =                                                  │
00:00:15 #1643 [Verbose] > │     let v0 : (unit -> UH0) = closure40()                                     │
00:00:15 #1644 [Verbose] > │     UH0_0(11.663856479730171, v0)                                            │
00:00:15 #1645 [Verbose] > │ and closure38 () () : UH0 =                                                  │
00:00:15 #1646 [Verbose] > │     let v0 : (unit -> UH0) = closure39()                                     │
00:00:15 #1647 [Verbose] > │     UH0_0(11.663733079277343, v0)                                            │
00:00:15 #1648 [Verbose] > │ and closure37 () () : UH0 =                                                  │
00:00:15 #1649 [Verbose] > │     let v0 : (unit -> UH0) = closure38()                                     │
00:00:15 #1650 [Verbose] > │     UH0_0(11.663569648675777, v0)                                            │
00:00:15 #1651 [Verbose] > │ and closure36 () () : UH0 =                                                  │
00:00:15 #1652 [Verbose] > │     let v0 : (unit -> UH0) = closure37()                                     │
00:00:15 #1653 [Verbose] > │     UH0_0(11.663353203599439, v0)                                            │
00:00:15 #1654 [Verbose] > │ and closure35 () () : UH0 =                                                  │
00:00:15 #1655 [Verbose] > │     let v0 : (unit -> UH0) = closure36()                                     │
00:00:15 #1656 [Verbose] > │     UH0_0(11.663066548940721, v0)                                            │
00:00:15 #1657 [Verbose] > │ and closure34 () () : UH0 =                                                  │
00:00:15 #1658 [Verbose] > │     let v0 : (unit -> UH0) = closure35()                                     │
00:00:15 #1659 [Verbose] > │     UH0_0(11.662686913915445, v0)                                            │
00:00:15 #1660 [Verbose] > │ and closure33 () () : UH0 =                                                  │
00:00:15 #1661 [Verbose] > │     let v0 : (unit -> UH0) = closure34()                                     │
00:00:15 #1662 [Verbose] > │     UH0_0(11.662184145236864, v0)                                            │
00:00:15 #1663 [Verbose] > │ and closure32 () () : UH0 =                                                  │
00:00:15 #1664 [Verbose] > │     let v0 : (unit -> UH0) = closure33()                                     │
00:00:15 #1665 [Verbose] > │     UH0_0(11.661518315638029, v0)                                            │
00:00:15 #1666 [Verbose] > │ and closure31 () () : UH0 =                                                  │
00:00:15 #1667 [Verbose] > │     let v0 : (unit -> UH0) = closure32()                                     │
00:00:15 #1668 [Verbose] > │     UH0_0(11.66063655920926, v0)                                             │
00:00:15 #1669 [Verbose] > │ and closure30 () () : UH0 =                                                  │
00:00:15 #1670 [Verbose] > │     let v0 : (unit -> UH0) = closure31()                                     │
00:00:15 #1671 [Verbose] > │     UH0_0(11.659468884709733, v0)                                            │
00:00:15 #1672 [Verbose] > │ and closure29 () () : UH0 =                                                  │
00:00:15 #1673 [Verbose] > │     let v0 : (unit -> UH0) = closure30()                                     │
00:00:15 #1674 [Verbose] > │     UH0_0(11.657922638782631, v0)                                            │
00:00:15 #1675 [Verbose] > │ and closure28 () () : UH0 =                                                  │
00:00:15 #1676 [Verbose] > │     let v0 : (unit -> UH0) = closure29()                                     │
00:00:15 #1677 [Verbose] > │     UH0_0(11.655875187195818, v0)                                            │
00:00:15 #1678 [Verbose] > │ and closure27 () () : UH0 =                                                  │
00:00:15 #1679 [Verbose] > │     let v0 : (unit -> UH0) = closure28()                                     │
00:00:15 #1680 [Verbose] > │     UH0_0(11.653164246713697, v0)                                            │
00:00:15 #1681 [Verbose] > │ and closure26 () () : UH0 =                                                  │
00:00:15 #1682 [Verbose] > │     let v0 : (unit -> UH0) = closure27()                                     │
00:00:15 #1683 [Verbose] > │     UH0_0(11.64957512416459, v0)                                             │
00:00:15 #1684 [Verbose] > │ and closure25 () () : UH0 =                                                  │
00:00:15 #1685 [Verbose] > │     let v0 : (unit -> UH0) = closure26()                                     │
00:00:15 #1686 [Verbose] > │     UH0_0(11.644823892116417, v0)                                            │
00:00:15 #1687 [Verbose] > │ and closure24 () () : UH0 =                                                  │
00:00:15 #1688 [Verbose] > │     let v0 : (unit -> UH0) = closure25()                                     │
00:00:15 #1689 [Verbose] > │     UH0_0(11.63853524018339, v0)                                             │
00:00:15 #1690 [Verbose] > │ and closure23 () () : UH0 =                                                  │
00:00:15 #1691 [Verbose] > │     let v0 : (unit -> UH0) = closure24()                                     │
00:00:15 #1692 [Verbose] > │     UH0_0(11.630213374558416, v0)                                            │
00:00:15 #1693 [Verbose] > │ and closure22 () () : UH0 =                                                  │
00:00:15 #1694 [Verbose] > │     let v0 : (unit -> UH0) = closure23()                                     │
00:00:15 #1695 [Verbose] > │     UH0_0(11.619203884549703, v0)                                            │
00:00:15 #1696 [Verbose] > │ and closure21 () () : UH0 =                                                  │
00:00:15 #1697 [Verbose] > │     let v0 : (unit -> UH0) = closure22()                                     │
00:00:15 #1698 [Verbose] > │     UH0_0(11.604643948207235, v0)                                            │
00:00:15 #1699 [Verbose] > │ and closure20 () () : UH0 =                                                  │
00:00:15 #1700 [Verbose] > │     let v0 : (unit -> UH0) = closure21()                                     │
00:00:15 #1701 [Verbose] > │     UH0_0(11.585397618384544, v0)                                            │
00:00:15 #1702 [Verbose] > │ and closure19 () () : UH0 =                                                  │
00:00:15 #1703 [Verbose] > │     let v0 : (unit -> UH0) = closure20()                                     │
00:00:15 #1704 [Verbose] > │     UH0_0(11.559972254267073, v0)                                            │
00:00:15 #1705 [Verbose] > │ and closure18 () () : UH0 =                                                  │
00:00:15 #1706 [Verbose] > │     let v0 : (unit -> UH0) = closure19()                                     │
00:00:15 #1707 [Verbose] > │     UH0_0(11.526411536153837, v0)                                            │
00:00:15 #1708 [Verbose] > │ and closure17 () () : UH0 =                                                  │
00:00:15 #1709 [Verbose] > │     let v0 : (unit -> UH0) = closure18()                                     │
00:00:15 #1710 [Verbose] > │     UH0_0(11.48216011776808, v0)                                             │
00:00:15 #1711 [Verbose] > │ and closure16 () () : UH0 =                                                  │
00:00:15 #1712 [Verbose] > │     let v0 : (unit -> UH0) = closure17()                                     │
00:00:15 #1713 [Verbose] > │     UH0_0(11.42389519391233, v0)                                             │
00:00:15 #1714 [Verbose] > │ and closure15 () () : UH0 =                                                  │
00:00:15 #1715 [Verbose] > │     let v0 : (unit -> UH0) = closure16()                                     │
00:00:15 #1716 [Verbose] > │     UH0_0(11.347321723441393, v0)                                            │
00:00:15 #1717 [Verbose] > │ and closure14 () () : UH0 =                                                  │
00:00:15 #1718 [Verbose] > │     let v0 : (unit -> UH0) = closure15()                                     │
00:00:15 #1719 [Verbose] > │     UH0_0(11.246931775734161, v0)                                            │
00:00:15 #1720 [Verbose] > │ and closure13 () () : UH0 =                                                  │
00:00:15 #1721 [Verbose] > │     let v0 : (unit -> UH0) = closure14()                                     │
00:00:15 #1722 [Verbose] > │     UH0_0(11.115736011467376, v0)                                            │
00:00:15 #1723 [Verbose] > │ and closure12 () () : UH0 =                                                  │
00:00:15 #1724 [Verbose] > │     let v0 : (unit -> UH0) = closure13()                                     │
00:00:15 #1725 [Verbose] > │     UH0_0(10.94498876251829, v0)                                             │
00:00:15 #1726 [Verbose] > │ and closure11 () () : UH0 =                                                  │
00:00:15 #1727 [Verbose] > │     let v0 : (unit -> UH0) = closure12()                                     │
00:00:15 #1728 [Verbose] > │     UH0_0(10.72394989903564, v0)                                             │
00:00:15 #1729 [Verbose] > │ and closure10 () () : UH0 =                                                  │
00:00:15 #1730 [Verbose] > │     let v0 : (unit -> UH0) = closure11()                                     │
00:00:15 #1731 [Verbose] > │     UH0_0(10.439758275369812, v0)                                            │
00:00:15 #1732 [Verbose] > │ and closure9 () () : UH0 =                                                   │
00:00:15 #1733 [Verbose] > │     let v0 : (unit -> UH0) = closure10()                                     │
00:00:15 #1734 [Verbose] > │     UH0_0(10.077531599826058, v0)                                            │
00:00:15 #1735 [Verbose] > │ and closure8 () () : UH0 =                                                   │
00:00:15 #1736 [Verbose] > │     let v0 : (unit -> UH0) = closure9()                                      │
00:00:15 #1737 [Verbose] > │     UH0_0(9.62084761372258, v0)                                              │
00:00:15 #1738 [Verbose] > │ and closure7 () () : UH0 =                                                   │
00:00:15 #1739 [Verbose] > │     let v0 : (unit -> UH0) = closure8()                                      │
00:00:15 #1740 [Verbose] > │     UH0_0(9.052781056066443, v0)                                             │
00:00:15 #1741 [Verbose] > │ and closure6 () () : UH0 =                                                   │
00:00:15 #1742 [Verbose] > │     let v0 : (unit -> UH0) = closure7()                                      │
00:00:15 #1743 [Verbose] > │     UH0_0(8.357635347880503, v0)                                             │
00:00:15 #1744 [Verbose] > │ and closure5 () () : UH0 =                                                   │
00:00:15 #1745 [Verbose] > │     let v0 : (unit -> UH0) = closure6()                                      │
00:00:15 #1746 [Verbose] > │     UH0_0(7.523376447621674, v0)                                             │
00:00:15 #1747 [Verbose] > │ and closure4 () () : UH0 =                                                   │
00:00:15 #1748 [Verbose] > │     let v0 : (unit -> UH0) = closure5()                                      │
00:00:15 #1749 [Verbose] > │     UH0_0(6.544529054818572, v0)                                             │
00:00:15 #1750 [Verbose] > │ and closure3 () () : UH0 =                                                   │
00:00:15 #1751 [Verbose] > │     let v0 : (unit -> UH0) = closure4()                                      │
00:00:15 #1752 [Verbose] > │     UH0_0(5.424976512996006, v0)                                             │
00:00:15 #1753 [Verbose] > │ and closure2 () () : UH0 =                                                   │
00:00:15 #1754 [Verbose] > │     let v0 : (unit -> UH0) = closure3()                                      │
00:00:15 #1755 [Verbose] > │     UH0_0(4.179852321428571, v0)                                             │
00:00:15 #1756 [Verbose] > │ and closure1 () () : UH0 =                                                   │
00:00:15 #1757 [Verbose] > │     let v0 : (unit -> UH0) = closure2()                                      │
00:00:15 #1758 [Verbose] > │     UH0_0(2.835714285714286, v0)                                             │
00:00:15 #1759 [Verbose] > │ and closure0 () () : UH0 =                                                   │
00:00:15 #1760 [Verbose] > │     let v0 : (unit -> UH0) = closure1()                                      │
00:00:15 #1761 [Verbose] > │     UH0_0(1.4285714285714286, v0)                                            │
00:00:15 #1762 [Verbose] > │ and method3 (v0 : float, v1 : UH0) : US0 =                                   │
00:00:15 #1763 [Verbose] > │     match v1 with                                                            │
00:00:15 #1764 [Verbose] > │     | UH0_0(v2, v3) -> (* StreamCons *)                                      │
00:00:15 #1765 [Verbose] > │         let v4 : bool = v0 <= 0.0                                            │
00:00:15 #1766 [Verbose] > │         if v4 then                                                           │
00:00:15 #1767 [Verbose] > │             US0_1(v2)                                                        │
00:00:15 #1768 [Verbose] > │         else                                                                 │
00:00:15 #1769 [Verbose] > │             let v6 : float = v0 - 1.0                                        │
00:00:15 #1770 [Verbose] > │             let v7 : UH0 = v3 ()                                             │
00:00:15 #1771 [Verbose] > │             method3(v6, v7)                                                  │
00:00:15 #1772 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:15 #1773 [Verbose] > │         US0_0                                                                │
00:00:15 #1774 [Verbose] > │ and method4 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:15 #1775 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:15 #1776 [Verbose] > │     v0                                                                       │
00:00:15 #1777 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:15 #1778 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:15 #1779 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (121)                      │
00:00:15 #1780 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:15 #1781 [Verbose] > │     while method1(v1) do                                                     │
00:00:15 #1782 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:15 #1783 [Verbose] > │         let v4 : float = float v3                                            │
00:00:15 #1784 [Verbose] > │         let v5 : float = 0.5 * v4                                            │
00:00:15 #1785 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:15 #1786 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:15 #1787 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:15 #1788 [Verbose] > │         ()                                                                   │
00:00:15 #1789 [Verbose] > │     let v7 : int32 = v0.Length                                               │
00:00:15 #1790 [Verbose] > │     let v8 : (float []) = Array.zeroCreate<float> (v7)                       │
00:00:15 #1791 [Verbose] > │     let v9 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:15 #1792 [Verbose] > │     while method2(v7, v9) do                                                 │
00:00:15 #1793 [Verbose] > │         let v11 : int32 = v9.l0                                              │
00:00:15 #1794 [Verbose] > │         let v12 : float = v0.[int v11]                                       │
00:00:15 #1795 [Verbose] > │         let v13 : float = round v12                                          │
00:00:15 #1796 [Verbose] > │         let v14 : float =  -v13                                              │
00:00:15 #1797 [Verbose] > │         let v15 : bool = v13 >= v14                                          │
00:00:15 #1798 [Verbose] > │         let v16 : float =                                                    │
00:00:15 #1799 [Verbose] > │             if v15 then                                                      │
00:00:15 #1800 [Verbose] > │                 v13                                                          │
00:00:15 #1801 [Verbose] > │             else                                                             │
00:00:15 #1802 [Verbose] > │                 v14                                                          │
00:00:15 #1803 [Verbose] > │         let v17 : float = 0.0                                                │
00:00:15 #1804 [Verbose] > │         let v18 : (unit -> UH0) = closure0()                                 │
00:00:15 #1805 [Verbose] > │         let v19 : UH0 = UH0_0(v17, v18)                                      │
00:00:15 #1806 [Verbose] > │         let v20 : US0 = method3(v16, v19)                                    │
00:00:15 #1807 [Verbose] > │         let v23 : float =                                                    │
00:00:15 #1808 [Verbose] > │             match v20 with                                                   │
00:00:15 #1809 [Verbose] > │             | US0_0 -> (* None *)                                            │
00:00:15 #1810 [Verbose] > │                 0.0                                                          │
00:00:15 #1811 [Verbose] > │             | US0_1(v21) -> (* Some *)                                       │
00:00:15 #1812 [Verbose] > │                 v21                                                          │
00:00:15 #1813 [Verbose] > │         v8.[int v11] <- v23                                                  │
00:00:15 #1814 [Verbose] > │         let v24 : int32 = v11 + 1                                            │
00:00:15 #1815 [Verbose] > │         v9.l0 <- v24                                                         │
00:00:15 #1816 [Verbose] > │         ()                                                                   │
00:00:15 #1817 [Verbose] > │     let v25 : string = "velocity of bike (m/s)"                              │
00:00:15 #1818 [Verbose] > │     let v26 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:15 #1819 [Verbose] > │ (v25, v0, v8)|]                                                              │
00:00:15 #1820 [Verbose] > │     let v27 : (struct (string * (float []) * (float [])) []) = method4(v26)  │
00:00:15 #1821 [Verbose] > │     let v28 : string = "bike velocity"                                       │
00:00:15 #1822 [Verbose] > │     let v29 : string = "time (s)"                                            │
00:00:15 #1823 [Verbose] > │     let v30 : string = ""                                                    │
00:00:15 #1824 [Verbose] > │     struct (v28, v29, v30, v27)                                              │
00:00:15 #1825 [Verbose] > │ method0()                                                                    │
00:00:15 #1826 [Verbose] > │                                                                              │
00:00:15 #1827 [Verbose] > │                                                                              │
00:00:15 #1828 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1829 [Verbose] >
00:00:15 #1830 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 #1831 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 #1832 [Verbose] > │ ## velocity_ftv                                                              │
00:00:15 #1833 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1834 [Verbose] >
00:00:15 #1835 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 #1836 [Verbose] > inl newton_second_tv m fs (t, v0) =
00:00:15 #1837 [Verbose] >     inl f_net = fs |> listm.map (fun f => f (t, v0)) |> listm'.sum
00:00:15 #1838 [Verbose] >     inl acc = f_net / m
00:00:15 #1839 [Verbose] >     1, acc
00:00:15 #1840 [Verbose] >
00:00:15 #1841 [Verbose] > inl update_tv dt m fs (t, v0) =
00:00:15 #1842 [Verbose] >     inl dtdt, dvdt = newton_second_tv m fs (t, v0)
00:00:15 #1843 [Verbose] >     t + dtdt * dt, v0 + dvdt * dt
00:00:15 #1844 [Verbose] >
00:00:15 #1845 [Verbose] > inl velocity_ftv dt m tv0 fs t =
00:00:15 #1846 [Verbose] >     stream.iterate (join update_tv dt m fs) tv0
00:00:15 #1847 [Verbose] >     |> stream.try_item (t / dt |> math.round |> abs)
00:00:15 #1848 [Verbose] >     |> optionm.map snd
00:00:15 #1849 [Verbose] >     |> optionm'.default_value 0
00:00:15 #1850 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0965-6525-6e42a58bb1a7/main.spi
00:00:15 #1851 [Verbose] >
00:00:15 #1852 [Verbose] > ╭─[ 156.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 #1853 [Verbose] > │ ()                                                                           │
00:00:15 #1854 [Verbose] > │                                                                              │
00:00:15 #1855 [Verbose] > │                                                                              │
00:00:15 #1856 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 #1857 [Verbose] >
00:00:15 #1858 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 #1859 [Verbose] > // // test
00:00:15 #1860 [Verbose] >
00:00:15 #1861 [Verbose] > inl x = am'.init_series 0 100 0.1
00:00:15 #1862 [Verbose] > inl y =
00:00:15 #1863 [Verbose] >     x
00:00:15 #1864 [Verbose] >     |> am.map (
00:00:15 #1865 [Verbose] >         velocity_ftv 0.1 20 (dyn (0, 0)) [[ fun (t, _) => pedal_coast t; fun (_,
00:00:15 #1866 [Verbose] > v) => f_air 2 1.225 0.5 v ]]
00:00:15 #1867 [Verbose] >     )
00:00:15 #1868 [Verbose] > "pedaling and coasting with air", "time (s)", "", ;[[ "velocity of bike (m/s)",
00:00:15 #1869 [Verbose] > x, y ]]
00:00:16 #1870 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-0980-8075-8e4e570433f1/main.spi
00:00:16 #1871 [Verbose] >
00:00:16 #1872 [Verbose] > ╭─[ 367.87ms - return value ]──────────────────────────────────────────────────╮
00:00:16 #1873 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:16 #1874 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:16 #1875 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:16 #1876 [Verbose] > │ stroke="none"/>                                                              │
00:00:16 #1877 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:16 #1878 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:16 #1879 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:16 #1880 [Verbose] > │ pedaling and coasting with air                                               │
00:00:16 #1881 [Verbose] > │ </text>                                                                      │
00:00:16 #1882 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:16 #1883 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #1884 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:16 #1885 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #1886 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:16 #1887 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #1888 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:16 #1889 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #1890 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x...                     │
00:00:16 #1891 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #1892 [Verbose] >
00:00:16 #1893 [Verbose] > ╭─[ 373.00ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #1894 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:16 #1895 [Verbose] > │ and UH0 =                                                                    │
00:00:16 #1896 [Verbose] > │     | UH0_0 of float * float * (unit -> UH0)                                 │
00:00:16 #1897 [Verbose] > │     | UH0_1                                                                  │
00:00:16 #1898 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:16 #1899 [Verbose] > │     | US0_0                                                                  │
00:00:16 #1900 [Verbose] > │     | US0_1 of f1_0 : float * f1_1 : float                                   │
00:00:16 #1901 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:16 #1902 [Verbose] > │     | US1_0                                                                  │
00:00:16 #1903 [Verbose] > │     | US1_1 of f1_0 : float                                                  │
00:00:16 #1904 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:16 #1905 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:16 #1906 [Verbose] > │     let v2 : bool = v1 < 1001                                                │
00:00:16 #1907 [Verbose] > │     v2                                                                       │
00:00:16 #1908 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:16 #1909 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:16 #1910 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:16 #1911 [Verbose] > │     v3                                                                       │
00:00:16 #1912 [Verbose] > │ and closure0 () struct (v0 : float, v1 : float) : struct (float * float) =   │
00:00:16 #1913 [Verbose] > │     let v2 : float =  -v1                                                    │
00:00:16 #1914 [Verbose] > │     let v3 : bool = v1 >= v2                                                 │
00:00:16 #1915 [Verbose] > │     let v4 : float =                                                         │
00:00:16 #1916 [Verbose] > │         if v3 then                                                           │
00:00:16 #1917 [Verbose] > │             v1                                                               │
00:00:16 #1918 [Verbose] > │         else                                                                 │
00:00:16 #1919 [Verbose] > │             v2                                                               │
00:00:16 #1920 [Verbose] > │     let v5 : float = -1.225 * v4                                             │
00:00:16 #1921 [Verbose] > │     let v6 : float = v5 * v1                                                 │
00:00:16 #1922 [Verbose] > │     let v7 : float = v6 / 2.0                                                │
00:00:16 #1923 [Verbose] > │     let v8 : float = v0 / 20.0                                               │
00:00:16 #1924 [Verbose] > │     let v9 : int32 = int32 v8                                                │
00:00:16 #1925 [Verbose] > │     let v10 : float = float v9                                               │
00:00:16 #1926 [Verbose] > │     let v11 : float = v10 * 20.0                                             │
00:00:16 #1927 [Verbose] > │     let v12 : float = v0 - v11                                               │
00:00:16 #1928 [Verbose] > │     let v13 : bool = v12 > 0.0                                               │
00:00:16 #1929 [Verbose] > │     let v15 : bool =                                                         │
00:00:16 #1930 [Verbose] > │         if v13 then                                                          │
00:00:16 #1931 [Verbose] > │             let v14 : bool = v12 < 10.0                                      │
00:00:16 #1932 [Verbose] > │             v14                                                              │
00:00:16 #1933 [Verbose] > │         else                                                                 │
00:00:16 #1934 [Verbose] > │             false                                                            │
00:00:16 #1935 [Verbose] > │     let v16 : float =                                                        │
00:00:16 #1936 [Verbose] > │         if v15 then                                                          │
00:00:16 #1937 [Verbose] > │             10.0                                                             │
00:00:16 #1938 [Verbose] > │         else                                                                 │
00:00:16 #1939 [Verbose] > │             0.0                                                              │
00:00:16 #1940 [Verbose] > │     let v17 : float = v16 + v7                                               │
00:00:16 #1941 [Verbose] > │     let v18 : float = v17 / 20.0                                             │
00:00:16 #1942 [Verbose] > │     let v19 : float = v0 + 0.1                                               │
00:00:16 #1943 [Verbose] > │     let v20 : float = v18 * 0.1                                              │
00:00:16 #1944 [Verbose] > │     let v21 : float = v1 + v20                                               │
00:00:16 #1945 [Verbose] > │     struct (v19, v21)                                                        │
00:00:16 #1946 [Verbose] > │ and method3 () : (struct (float * float) -> struct (float * float)) =        │
00:00:16 #1947 [Verbose] > │     closure0()                                                               │
00:00:16 #1948 [Verbose] > │ and closure1 (v0 : (struct (float * float) -> struct (float * float)), v1 :  │
00:00:16 #1949 [Verbose] > │ float, v2 : float, v3 : float, v4 : float) () : UH0 =                        │
00:00:16 #1950 [Verbose] > │     let struct (v5 : float, v6 : float) = v0 struct (v3, v4)                 │
00:00:16 #1951 [Verbose] > │     let v7 : (unit -> UH0) = closure1(v0, v1, v2, v5, v6)                    │
00:00:16 #1952 [Verbose] > │     UH0_0(v3, v4, v7)                                                        │
00:00:16 #1953 [Verbose] > │ and method4 (v0 : float, v1 : UH0) : US0 =                                   │
00:00:16 #1954 [Verbose] > │     match v1 with                                                            │
00:00:16 #1955 [Verbose] > │     | UH0_0(v2, v3, v4) -> (* StreamCons *)                                  │
00:00:16 #1956 [Verbose] > │         let v5 : bool = v0 <= 0.0                                            │
00:00:16 #1957 [Verbose] > │         if v5 then                                                           │
00:00:16 #1958 [Verbose] > │             US0_1(v2, v3)                                                    │
00:00:16 #1959 [Verbose] > │         else                                                                 │
00:00:16 #1960 [Verbose] > │             let v7 : float = v0 - 1.0                                        │
00:00:16 #1961 [Verbose] > │             let v8 : UH0 = v4 ()                                             │
00:00:16 #1962 [Verbose] > │             method4(v7, v8)                                                  │
00:00:16 #1963 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:16 #1964 [Verbose] > │         US0_0                                                                │
00:00:16 #1965 [Verbose] > │ and method5 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:16 #1966 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:16 #1967 [Verbose] > │     v0                                                                       │
00:00:16 #1968 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:16 #1969 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:16 #1970 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (1001)                     │
00:00:16 #1971 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:16 #1972 [Verbose] > │     while method1(v1) do                                                     │
00:00:16 #1973 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:16 #1974 [Verbose] > │         let v4 : float = float v3                                            │
00:00:16 #1975 [Verbose] > │         let v5 : float = 0.1 * v4                                            │
00:00:16 #1976 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:16 #1977 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:16 #1978 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:16 #1979 [Verbose] > │         ()                                                                   │
00:00:16 #1980 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:16 #1981 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:16 #1982 [Verbose] > │     let v9 : int32 = v0.Length                                               │
00:00:16 #1983 [Verbose] > │     let v10 : (float []) = Array.zeroCreate<float> (v9)                      │
00:00:16 #1984 [Verbose] > │     let v11 : Mut0 = {l0 = 0} : Mut0                                         │
00:00:16 #1985 [Verbose] > │     while method2(v9, v11) do                                                │
00:00:16 #1986 [Verbose] > │         let v13 : int32 = v11.l0                                             │
00:00:16 #1987 [Verbose] > │         let v14 : float = v0.[int v13]                                       │
00:00:16 #1988 [Verbose] > │         let v15 : (struct (float * float) -> struct (float * float)) =       │
00:00:16 #1989 [Verbose] > │ method3()                                                                    │
00:00:16 #1990 [Verbose] > │         let struct (v16 : float, v17 : float) = v15 struct (v7, v8)          │
00:00:16 #1991 [Verbose] > │         let v18 : float = v14 / 0.1                                          │
00:00:16 #1992 [Verbose] > │         let v19 : float = round v18                                          │
00:00:16 #1993 [Verbose] > │         let v20 : float =  -v19                                              │
00:00:16 #1994 [Verbose] > │         let v21 : bool = v19 >= v20                                          │
00:00:16 #1995 [Verbose] > │         let v22 : float =                                                    │
00:00:16 #1996 [Verbose] > │             if v21 then                                                      │
00:00:16 #1997 [Verbose] > │                 v19                                                          │
00:00:16 #1998 [Verbose] > │             else                                                             │
00:00:16 #1999 [Verbose] > │                 v20                                                          │
00:00:16 #2000 [Verbose] > │         let v23 : (unit -> UH0) = closure1(v15, v7, v8, v16, v17)            │
00:00:16 #2001 [Verbose] > │         let v24 : UH0 = UH0_0(v7, v8, v23)                                   │
00:00:16 #2002 [Verbose] > │         let v25 : US0 = method4(v22, v24)                                    │
00:00:16 #2003 [Verbose] > │         let v31 : US1 =                                                      │
00:00:16 #2004 [Verbose] > │             match v25 with                                                   │
00:00:16 #2005 [Verbose] > │             | US0_0 -> (* None *)                                            │
00:00:16 #2006 [Verbose] > │                 US1_0                                                        │
00:00:16 #2007 [Verbose] > │             | US0_1(v26, v27) -> (* Some *)                                  │
00:00:16 #2008 [Verbose] > │                 US1_1(v27)                                                   │
00:00:16 #2009 [Verbose] > │         let v34 : float =                                                    │
00:00:16 #2010 [Verbose] > │             match v31 with                                                   │
00:00:16 #2011 [Verbose] > │             | US1_0 -> (* None *)                                            │
00:00:16 #2012 [Verbose] > │                 0.0                                                          │
00:00:16 #2013 [Verbose] > │             | US1_1(v32) -> (* Some *)                                       │
00:00:16 #2014 [Verbose] > │                 v32                                                          │
00:00:16 #2015 [Verbose] > │         v10.[int v13] <- v34                                                 │
00:00:16 #2016 [Verbose] > │         let v35 : int32 = v13 + 1                                            │
00:00:16 #2017 [Verbose] > │         v11.l0 <- v35                                                        │
00:00:16 #2018 [Verbose] > │         ()                                                                   │
00:00:16 #2019 [Verbose] > │     let v36 : string = "velocity of bike (m/s)"                              │
00:00:16 #2020 [Verbose] > │     let v37 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:16 #2021 [Verbose] > │ (v36, v0, v10)|]                                                             │
00:00:16 #2022 [Verbose] > │     let v38 : (struct (string * (float []) * (float [])) []) = method5(v37)  │
00:00:16 #2023 [Verbose] > │     let v39 : string = "pedaling and coasting with air"                      │
00:00:16 #2024 [Verbose] > │     let v40 : string = "time (s)"                                            │
00:00:16 #2025 [Verbose] > │     let v41 : string = ""                                                    │
00:00:16 #2026 [Verbose] > │     struct (v39, v40, v41, v38)                                              │
00:00:16 #2027 [Verbose] > │ method0()                                                                    │
00:00:16 #2028 [Verbose] > │                                                                              │
00:00:16 #2029 [Verbose] > │                                                                              │
00:00:16 #2030 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #2031 [Verbose] >
00:00:16 #2032 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 #2033 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 #2034 [Verbose] > │ ## velocity_ftxv                                                             │
00:00:16 #2035 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #2036 [Verbose] >
00:00:16 #2037 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #2038 [Verbose] > nominal state_1d = time * position * velocity
00:00:16 #2039 [Verbose] > nominal rrr = f64 * f64 * f64
00:00:16 #2040 [Verbose] >
00:00:16 #2041 [Verbose] > inl newton_second_1d m fs (state_1d (t, x0, v0)) =
00:00:16 #2042 [Verbose] >     inl f_net = fs |> listm.map (fun f => f (state_1d (t, x0, v0))) |>
00:00:16 #2043 [Verbose] > listm'.sum
00:00:16 #2044 [Verbose] >     inl acc = f_net / m
00:00:16 #2045 [Verbose] >     rrr (1f64, v0, acc)
00:00:16 #2046 [Verbose] >
00:00:16 #2047 [Verbose] > inl euler_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:00:16 #2048 [Verbose] >     inl (rrr (_, _, dvdt)) = deriv t
00:00:16 #2049 [Verbose] >     inl t1 = t0 + dt
00:00:16 #2050 [Verbose] >     inl x1 = x0 + v0 * dt
00:00:16 #2051 [Verbose] >     inl v1 = v0 + dvdt * dt
00:00:16 #2052 [Verbose] >     state_1d (t1, x1, v1)
00:00:16 #2053 [Verbose] >
00:00:16 #2054 [Verbose] > inl update_txv dt m fs =
00:00:16 #2055 [Verbose] >     newton_second_1d m fs |> euler_1d dt
00:00:16 #2056 [Verbose] >
00:00:16 #2057 [Verbose] > inl states_txv dt m txv0 fs =
00:00:16 #2058 [Verbose] >     seq.iterate_ (update_txv dt m fs) txv0
00:00:16 #2059 [Verbose] >
00:00:16 #2060 [Verbose] > inl velocity_1d sts t =
00:00:16 #2061 [Verbose] >     inl (state_1d (t0, _, _)) = sts 0
00:00:16 #2062 [Verbose] >     inl (state_1d (t1, _, _)) = sts 1
00:00:16 #2063 [Verbose] >     inl dt = t1 - t0
00:00:16 #2064 [Verbose] >     inl num_steps = t / dt |> math.round |> abs
00:00:16 #2065 [Verbose] >     inl (state_1d (_, _, v0)) = sts num_steps
00:00:16 #2066 [Verbose] >     v0
00:00:16 #2067 [Verbose] >
00:00:16 #2068 [Verbose] > inl velocity_ftxv dt m txv0 fs =
00:00:16 #2069 [Verbose] >     states_txv dt m txv0 fs |> velocity_1d
00:00:16 #2070 [Verbose] >
00:00:16 #2071 [Verbose] > inl position_1d sts t =
00:00:16 #2072 [Verbose] >     inl (state_1d (t0, _, _)) = sts 0
00:00:16 #2073 [Verbose] >     inl (state_1d (t1, _, _)) = sts 1
00:00:16 #2074 [Verbose] >     inl dt = t1 - t0
00:00:16 #2075 [Verbose] >     inl num_steps = t / dt |> math.round |> abs
00:00:16 #2076 [Verbose] >     inl (state_1d (_, x0, _)) = sts num_steps
00:00:16 #2077 [Verbose] >     x0
00:00:16 #2078 [Verbose] >
00:00:16 #2079 [Verbose] > inl position_ftxv dt m txv0 fs =
00:00:16 #2080 [Verbose] >     states_txv dt m txv0 fs |> position_1d
00:00:16 #2081 [Verbose] >
00:00:16 #2082 [Verbose] > inl spring_force k (state_1d (_, x0, _)) =
00:00:16 #2083 [Verbose] >     -k * x0
00:00:16 #2084 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1019-1975-1a77e45ad089/main.spi
00:00:16 #2085 [Verbose] >
00:00:16 #2086 [Verbose] > ╭─[ 155.76ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #2087 [Verbose] > │ ()                                                                           │
00:00:16 #2088 [Verbose] > │                                                                              │
00:00:16 #2089 [Verbose] > │                                                                              │
00:00:16 #2090 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #2091 [Verbose] >
00:00:16 #2092 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #2093 [Verbose] > // // test
00:00:16 #2094 [Verbose] >
00:00:16 #2095 [Verbose] > inl damped_ho_forces () =
00:00:16 #2096 [Verbose] >     [[
00:00:16 #2097 [Verbose] >         spring_force 0.8
00:00:16 #2098 [Verbose] >         fun (state_1d (_, _, v0)) => f_air 2 1.225 (pi * math.square 0.02) v0
00:00:16 #2099 [Verbose] >         fun _ => -0.0027 * 9.80665
00:00:16 #2100 [Verbose] >     ]]
00:00:16 #2101 [Verbose] >
00:00:16 #2102 [Verbose] > inl damped_ho_states () =
00:00:16 #2103 [Verbose] >     states_txv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ())
00:00:16 #2104 [Verbose] >
00:00:16 #2105 [Verbose] > inl pingpong_position t =
00:00:16 #2106 [Verbose] >     position_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:00:16 #2107 [Verbose] >
00:00:16 #2108 [Verbose] > inl x : a _ f64 = am'.init_series 0 3 0.01
00:00:16 #2109 [Verbose] > inl y = x |> am.map pingpong_position
00:00:16 #2110 [Verbose] > "ping pong ball on a slinky", "time (s)", "", ;[[ "position (m)", x, y ]]
00:00:16 #2111 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1034-3484-3b734086f03b/main.spi
00:00:16 #2112 [Verbose] >
00:00:16 #2113 [Verbose] > ╭─[ 209.87ms - return value ]──────────────────────────────────────────────────╮
00:00:16 #2114 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:16 #2115 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:16 #2116 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:16 #2117 [Verbose] > │ stroke="none"/>                                                              │
00:00:16 #2118 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:16 #2119 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:16 #2120 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:16 #2121 [Verbose] > │ ping pong ball on a slinky                                                   │
00:00:16 #2122 [Verbose] > │ </text>                                                                      │
00:00:16 #2123 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:00:16 #2124 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #2125 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:16 #2126 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #2127 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:00:16 #2128 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #2129 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:00:16 #2130 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #2131 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="9...                 │
00:00:16 #2132 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #2133 [Verbose] >
00:00:16 #2134 [Verbose] > ╭─[ 216.05ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #2135 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:16 #2136 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:16 #2137 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:16 #2138 [Verbose] > │     let v2 : bool = v1 < 301                                                 │
00:00:16 #2139 [Verbose] > │     v2                                                                       │
00:00:16 #2140 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:16 #2141 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:16 #2142 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:16 #2143 [Verbose] > │     v3                                                                       │
00:00:16 #2144 [Verbose] > │ and method3 (v0 : float, v1 : float, v2 : float, v3 : float) : struct (float │
00:00:16 #2145 [Verbose] > │ * float * float) =                                                           │
00:00:16 #2146 [Verbose] > │     let v4 : bool = v3 <= 0.0                                                │
00:00:16 #2147 [Verbose] > │     if v4 then                                                               │
00:00:16 #2148 [Verbose] > │         struct (v0, v1, v2)                                                  │
00:00:16 #2149 [Verbose] > │     else                                                                     │
00:00:16 #2150 [Verbose] > │         let v5 : float =  -v2                                                │
00:00:16 #2151 [Verbose] > │         let v6 : bool = v2 >= v5                                             │
00:00:16 #2152 [Verbose] > │         let v7 : float =                                                     │
00:00:16 #2153 [Verbose] > │             if v6 then                                                       │
00:00:16 #2154 [Verbose] > │                 v2                                                           │
00:00:16 #2155 [Verbose] > │             else                                                             │
00:00:16 #2156 [Verbose] > │                 v5                                                           │
00:00:16 #2157 [Verbose] > │         let v8 : float = -0.0030787608005179976 * v7                         │
00:00:16 #2158 [Verbose] > │         let v9 : float = v8 * v2                                             │
00:00:16 #2159 [Verbose] > │         let v10 : float = v9 / 2.0                                           │
00:00:16 #2160 [Verbose] > │         let v11 : float = -0.8 * v1                                          │
00:00:16 #2161 [Verbose] > │         let v12 : float = v11 + v10                                          │
00:00:16 #2162 [Verbose] > │         let v13 : float = v12 + -0.026477955                                 │
00:00:16 #2163 [Verbose] > │         let v14 : float = v13 / 0.0027                                       │
00:00:16 #2164 [Verbose] > │         let v15 : float = v0 + 0.001                                         │
00:00:16 #2165 [Verbose] > │         let v16 : float = v2 * 0.001                                         │
00:00:16 #2166 [Verbose] > │         let v17 : float = v1 + v16                                           │
00:00:16 #2167 [Verbose] > │         let v18 : float = v14 * 0.001                                        │
00:00:16 #2168 [Verbose] > │         let v19 : float = v2 + v18                                           │
00:00:16 #2169 [Verbose] > │         let v20 : float = v3 - 1.0                                           │
00:00:16 #2170 [Verbose] > │         method3(v15, v17, v19, v20)                                          │
00:00:16 #2171 [Verbose] > │ and method4 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:16 #2172 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:16 #2173 [Verbose] > │     v0                                                                       │
00:00:16 #2174 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:16 #2175 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:16 #2176 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (301)                      │
00:00:16 #2177 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:16 #2178 [Verbose] > │     while method1(v1) do                                                     │
00:00:16 #2179 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:16 #2180 [Verbose] > │         let v4 : float = float v3                                            │
00:00:16 #2181 [Verbose] > │         let v5 : float = 0.01 * v4                                           │
00:00:16 #2182 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:16 #2183 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:16 #2184 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:16 #2185 [Verbose] > │         ()                                                                   │
00:00:16 #2186 [Verbose] > │     let v7 : int32 = v0.Length                                               │
00:00:16 #2187 [Verbose] > │     let v8 : (float []) = Array.zeroCreate<float> (v7)                       │
00:00:16 #2188 [Verbose] > │     let v9 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:16 #2189 [Verbose] > │     while method2(v7, v9) do                                                 │
00:00:16 #2190 [Verbose] > │         let v11 : int32 = v9.l0                                              │
00:00:16 #2191 [Verbose] > │         let v12 : float = v0.[int v11]                                       │
00:00:16 #2192 [Verbose] > │         let v13 : float = 0.0                                                │
00:00:16 #2193 [Verbose] > │         let v14 : float = 0.1                                                │
00:00:16 #2194 [Verbose] > │         let v15 : float = 0.0                                                │
00:00:16 #2195 [Verbose] > │         let v16 : float = 0.0                                                │
00:00:16 #2196 [Verbose] > │         let struct (v17 : float, v18 : float, v19 : float) = method3(v13,    │
00:00:16 #2197 [Verbose] > │ v14, v15, v16)                                                               │
00:00:16 #2198 [Verbose] > │         let v20 : float = 0.0                                                │
00:00:16 #2199 [Verbose] > │         let v21 : float = 0.1                                                │
00:00:16 #2200 [Verbose] > │         let v22 : float = 0.0                                                │
00:00:16 #2201 [Verbose] > │         let v23 : float = 1.0                                                │
00:00:16 #2202 [Verbose] > │         let struct (v24 : float, v25 : float, v26 : float) = method3(v20,    │
00:00:16 #2203 [Verbose] > │ v21, v22, v23)                                                               │
00:00:16 #2204 [Verbose] > │         let v27 : float = v24 - v17                                          │
00:00:16 #2205 [Verbose] > │         let v28 : float = v12 / v27                                          │
00:00:16 #2206 [Verbose] > │         let v29 : float = round v28                                          │
00:00:16 #2207 [Verbose] > │         let v30 : float =  -v29                                              │
00:00:16 #2208 [Verbose] > │         let v31 : bool = v29 >= v30                                          │
00:00:16 #2209 [Verbose] > │         let v32 : float =                                                    │
00:00:16 #2210 [Verbose] > │             if v31 then                                                      │
00:00:16 #2211 [Verbose] > │                 v29                                                          │
00:00:16 #2212 [Verbose] > │             else                                                             │
00:00:16 #2213 [Verbose] > │                 v30                                                          │
00:00:16 #2214 [Verbose] > │         let v33 : float = 0.0                                                │
00:00:16 #2215 [Verbose] > │         let v34 : float = 0.1                                                │
00:00:16 #2216 [Verbose] > │         let v35 : float = 0.0                                                │
00:00:16 #2217 [Verbose] > │         let struct (v36 : float, v37 : float, v38 : float) = method3(v33,    │
00:00:16 #2218 [Verbose] > │ v34, v35, v32)                                                               │
00:00:16 #2219 [Verbose] > │         v8.[int v11] <- v37                                                  │
00:00:16 #2220 [Verbose] > │         let v39 : int32 = v11 + 1                                            │
00:00:16 #2221 [Verbose] > │         v9.l0 <- v39                                                         │
00:00:16 #2222 [Verbose] > │         ()                                                                   │
00:00:16 #2223 [Verbose] > │     let v40 : string = "position (m)"                                        │
00:00:16 #2224 [Verbose] > │     let v41 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:16 #2225 [Verbose] > │ (v40, v0, v8)|]                                                              │
00:00:16 #2226 [Verbose] > │     let v42 : (struct (string * (float []) * (float [])) []) = method4(v41)  │
00:00:16 #2227 [Verbose] > │     let v43 : string = "ping pong ball on a slinky"                          │
00:00:16 #2228 [Verbose] > │     let v44 : string = "time (s)"                                            │
00:00:16 #2229 [Verbose] > │     let v45 : string = ""                                                    │
00:00:16 #2230 [Verbose] > │     struct (v43, v44, v45, v42)                                              │
00:00:16 #2231 [Verbose] > │ method0()                                                                    │
00:00:16 #2232 [Verbose] > │                                                                              │
00:00:16 #2233 [Verbose] > │                                                                              │
00:00:16 #2234 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #2235 [Verbose] >
00:00:16 #2236 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #2237 [Verbose] > // // test
00:00:16 #2238 [Verbose] >
00:00:16 #2239 [Verbose] > inl pingpong_velocity t =
00:00:16 #2240 [Verbose] >     velocity_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:00:16 #2241 [Verbose] >
00:00:16 #2242 [Verbose] > inl x = am'.init_series 0 3 0.01
00:00:16 #2243 [Verbose] > inl y = x |> am.map pingpong_velocity
00:00:16 #2244 [Verbose] > "ping pong ball on a slinky", "time (s)", "", ;[[ "velocity (m/s)", x, y ]]
00:00:16 #2245 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1057-5761-54ae407607fe/main.spi
00:00:16 #2246 [Verbose] >
00:00:16 #2247 [Verbose] > ╭─[ 221.51ms - return value ]──────────────────────────────────────────────────╮
00:00:16 #2248 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:16 #2249 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:16 #2250 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:16 #2251 [Verbose] > │ stroke="none"/>                                                              │
00:00:16 #2252 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:16 #2253 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:16 #2254 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:16 #2255 [Verbose] > │ ping pong ball on a slinky                                                   │
00:00:16 #2256 [Verbose] > │ </text>                                                                      │
00:00:16 #2257 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:00:16 #2258 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #2259 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:16 #2260 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #2261 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:00:16 #2262 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #2263 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:00:16 #2264 [Verbose] > │ y2="75"/>                                                                    │
00:00:16 #2265 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="9...                 │
00:00:16 #2266 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #2267 [Verbose] >
00:00:16 #2268 [Verbose] > ╭─[ 227.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 #2269 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:16 #2270 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:16 #2271 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:16 #2272 [Verbose] > │     let v2 : bool = v1 < 301                                                 │
00:00:16 #2273 [Verbose] > │     v2                                                                       │
00:00:16 #2274 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:16 #2275 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:16 #2276 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:16 #2277 [Verbose] > │     v3                                                                       │
00:00:16 #2278 [Verbose] > │ and method3 (v0 : float, v1 : float, v2 : float, v3 : float) : struct (float │
00:00:16 #2279 [Verbose] > │ * float * float) =                                                           │
00:00:16 #2280 [Verbose] > │     let v4 : bool = v3 <= 0.0                                                │
00:00:16 #2281 [Verbose] > │     if v4 then                                                               │
00:00:16 #2282 [Verbose] > │         struct (v0, v1, v2)                                                  │
00:00:16 #2283 [Verbose] > │     else                                                                     │
00:00:16 #2284 [Verbose] > │         let v5 : float =  -v2                                                │
00:00:16 #2285 [Verbose] > │         let v6 : bool = v2 >= v5                                             │
00:00:16 #2286 [Verbose] > │         let v7 : float =                                                     │
00:00:16 #2287 [Verbose] > │             if v6 then                                                       │
00:00:16 #2288 [Verbose] > │                 v2                                                           │
00:00:16 #2289 [Verbose] > │             else                                                             │
00:00:16 #2290 [Verbose] > │                 v5                                                           │
00:00:16 #2291 [Verbose] > │         let v8 : float = -0.0030787608005179976 * v7                         │
00:00:16 #2292 [Verbose] > │         let v9 : float = v8 * v2                                             │
00:00:16 #2293 [Verbose] > │         let v10 : float = v9 / 2.0                                           │
00:00:16 #2294 [Verbose] > │         let v11 : float = -0.8 * v1                                          │
00:00:16 #2295 [Verbose] > │         let v12 : float = v11 + v10                                          │
00:00:16 #2296 [Verbose] > │         let v13 : float = v12 + -0.026477955                                 │
00:00:16 #2297 [Verbose] > │         let v14 : float = v13 / 0.0027                                       │
00:00:16 #2298 [Verbose] > │         let v15 : float = v0 + 0.001                                         │
00:00:16 #2299 [Verbose] > │         let v16 : float = v2 * 0.001                                         │
00:00:16 #2300 [Verbose] > │         let v17 : float = v1 + v16                                           │
00:00:16 #2301 [Verbose] > │         let v18 : float = v14 * 0.001                                        │
00:00:16 #2302 [Verbose] > │         let v19 : float = v2 + v18                                           │
00:00:16 #2303 [Verbose] > │         let v20 : float = v3 - 1.0                                           │
00:00:16 #2304 [Verbose] > │         method3(v15, v17, v19, v20)                                          │
00:00:16 #2305 [Verbose] > │ and method4 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:16 #2306 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:16 #2307 [Verbose] > │     v0                                                                       │
00:00:16 #2308 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:16 #2309 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:16 #2310 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (301)                      │
00:00:16 #2311 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:16 #2312 [Verbose] > │     while method1(v1) do                                                     │
00:00:16 #2313 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:16 #2314 [Verbose] > │         let v4 : float = float v3                                            │
00:00:16 #2315 [Verbose] > │         let v5 : float = 0.01 * v4                                           │
00:00:16 #2316 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:16 #2317 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:16 #2318 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:16 #2319 [Verbose] > │         ()                                                                   │
00:00:16 #2320 [Verbose] > │     let v7 : int32 = v0.Length                                               │
00:00:16 #2321 [Verbose] > │     let v8 : (float []) = Array.zeroCreate<float> (v7)                       │
00:00:16 #2322 [Verbose] > │     let v9 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:16 #2323 [Verbose] > │     while method2(v7, v9) do                                                 │
00:00:16 #2324 [Verbose] > │         let v11 : int32 = v9.l0                                              │
00:00:16 #2325 [Verbose] > │         let v12 : float = v0.[int v11]                                       │
00:00:16 #2326 [Verbose] > │         let v13 : float = 0.0                                                │
00:00:16 #2327 [Verbose] > │         let v14 : float = 0.1                                                │
00:00:16 #2328 [Verbose] > │         let v15 : float = 0.0                                                │
00:00:16 #2329 [Verbose] > │         let v16 : float = 0.0                                                │
00:00:16 #2330 [Verbose] > │         let struct (v17 : float, v18 : float, v19 : float) = method3(v13,    │
00:00:16 #2331 [Verbose] > │ v14, v15, v16)                                                               │
00:00:16 #2332 [Verbose] > │         let v20 : float = 0.0                                                │
00:00:16 #2333 [Verbose] > │         let v21 : float = 0.1                                                │
00:00:16 #2334 [Verbose] > │         let v22 : float = 0.0                                                │
00:00:16 #2335 [Verbose] > │         let v23 : float = 1.0                                                │
00:00:16 #2336 [Verbose] > │         let struct (v24 : float, v25 : float, v26 : float) = method3(v20,    │
00:00:16 #2337 [Verbose] > │ v21, v22, v23)                                                               │
00:00:16 #2338 [Verbose] > │         let v27 : float = v24 - v17                                          │
00:00:16 #2339 [Verbose] > │         let v28 : float = v12 / v27                                          │
00:00:16 #2340 [Verbose] > │         let v29 : float = round v28                                          │
00:00:16 #2341 [Verbose] > │         let v30 : float =  -v29                                              │
00:00:16 #2342 [Verbose] > │         let v31 : bool = v29 >= v30                                          │
00:00:16 #2343 [Verbose] > │         let v32 : float =                                                    │
00:00:16 #2344 [Verbose] > │             if v31 then                                                      │
00:00:16 #2345 [Verbose] > │                 v29                                                          │
00:00:16 #2346 [Verbose] > │             else                                                             │
00:00:16 #2347 [Verbose] > │                 v30                                                          │
00:00:16 #2348 [Verbose] > │         let v33 : float = 0.0                                                │
00:00:16 #2349 [Verbose] > │         let v34 : float = 0.1                                                │
00:00:16 #2350 [Verbose] > │         let v35 : float = 0.0                                                │
00:00:16 #2351 [Verbose] > │         let struct (v36 : float, v37 : float, v38 : float) = method3(v33,    │
00:00:16 #2352 [Verbose] > │ v34, v35, v32)                                                               │
00:00:16 #2353 [Verbose] > │         v8.[int v11] <- v38                                                  │
00:00:16 #2354 [Verbose] > │         let v39 : int32 = v11 + 1                                            │
00:00:16 #2355 [Verbose] > │         v9.l0 <- v39                                                         │
00:00:16 #2356 [Verbose] > │         ()                                                                   │
00:00:16 #2357 [Verbose] > │     let v40 : string = "velocity (m/s)"                                      │
00:00:16 #2358 [Verbose] > │     let v41 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:16 #2359 [Verbose] > │ (v40, v0, v8)|]                                                              │
00:00:16 #2360 [Verbose] > │     let v42 : (struct (string * (float []) * (float [])) []) = method4(v41)  │
00:00:16 #2361 [Verbose] > │     let v43 : string = "ping pong ball on a slinky"                          │
00:00:16 #2362 [Verbose] > │     let v44 : string = "time (s)"                                            │
00:00:16 #2363 [Verbose] > │     let v45 : string = ""                                                    │
00:00:16 #2364 [Verbose] > │     struct (v43, v44, v45, v42)                                              │
00:00:16 #2365 [Verbose] > │ method0()                                                                    │
00:00:16 #2366 [Verbose] > │                                                                              │
00:00:16 #2367 [Verbose] > │                                                                              │
00:00:16 #2368 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #2369 [Verbose] >
00:00:16 #2370 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 #2371 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 #2372 [Verbose] > │ ## shift                                                                     │
00:00:16 #2373 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 #2374 [Verbose] >
00:00:16 #2375 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 #2376 [Verbose] > type update_function s = s -> s
00:00:16 #2377 [Verbose] >
00:00:16 #2378 [Verbose] > type differential_equation s ds = s -> ds
00:00:16 #2379 [Verbose] >
00:00:16 #2380 [Verbose] > type numerical_method s ds = differential_equation s ds -> update_function s
00:00:16 #2381 [Verbose] >
00:00:16 #2382 [Verbose] >
00:00:16 #2383 [Verbose] > inl solver method =
00:00:16 #2384 [Verbose] >     method >> seq.iterate
00:00:16 #2385 [Verbose] > inl solver' method =
00:00:16 #2386 [Verbose] >     method >> seq.iterate'
00:00:16 #2387 [Verbose] > inl solver_ method =
00:00:16 #2388 [Verbose] >     method >> seq.iterate_
00:00:16 #2389 [Verbose] >
00:00:16 #2390 [Verbose] >
00:00:16 #2391 [Verbose] > inl euler_cromer_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:00:16 #2392 [Verbose] >     inl (rrr (_, _, dvdt)) = deriv t
00:00:16 #2393 [Verbose] >     inl t1 = t0 + dt
00:00:16 #2394 [Verbose] >     inl v1 = v0 + dvdt * dt
00:00:16 #2395 [Verbose] >     inl x1 = x0 + v1 * dt
00:00:16 #2396 [Verbose] >     state_1d (t1, x1, v1)
00:00:16 #2397 [Verbose] >
00:00:16 #2398 [Verbose] > inl update_txv_ec dt m fs =
00:00:16 #2399 [Verbose] >     euler_cromer_1d dt (newton_second_1d m fs)
00:00:16 #2400 [Verbose] >
00:00:16 #2401 [Verbose] > prototype (+++) ds : ds -> ds -> ds
00:00:16 #2402 [Verbose] > prototype scale ds : f64 -> ds -> ds
00:00:16 #2403 [Verbose] >
00:00:16 #2404 [Verbose] > instance (+++) rrr = fun (rrr (dtdt0, dxdt0, dvdt0)) (rrr (dtdt1, dxdt1, dvdt1))
00:00:16 #2405 [Verbose] > =>
00:00:16 #2406 [Verbose] >     rrr (dtdt0 + dtdt1, dxdt0 + dxdt1, dvdt0 + dvdt1)
00:00:16 #2407 [Verbose] >
00:00:16 #2408 [Verbose] > instance scale rrr = fun w (rrr (dtdt0, dxdt0, dvdt0)) =>
00:00:16 #2409 [Verbose] >     rrr (w * dtdt0, w * dxdt0, w * dvdt0)
00:00:16 #2410 [Verbose] >
00:00:16 #2411 [Verbose] > prototype shift s : forall ds. f64 -> ds -> s -> s
00:00:16 #2412 [Verbose] >
00:00:16 #2413 [Verbose] > instance shift state_1d = fun dt ds (state_1d (t, x, v)) =>
00:00:16 #2414 [Verbose] >     inl dtdt, dxdt, dvdt =
00:00:16 #2415 [Verbose] >         real
00:00:16 #2416 [Verbose] >             match ds with
00:00:16 #2417 [Verbose] >             | rrr x => x
00:00:16 #2418 [Verbose] >             | state_1d x => x
00:00:16 #2419 [Verbose] >     state_1d (t + dtdt * dt, x + dxdt * dt, v + dvdt * dt)
00:00:16 #2420 [Verbose] >
00:00:16 #2421 [Verbose] > inl euler dt deriv st0 =
00:00:16 #2422 [Verbose] >     shift dt (deriv st0) st0
00:00:16 #2423 [Verbose] >
00:00:16 #2424 [Verbose] > inl runge_kutta_4 dt deriv st0 =
00:00:16 #2425 [Verbose] >     inl m0 = deriv st0
00:00:16 #2426 [Verbose] >     inl m1 = deriv (shift (dt / 2) m0 st0)
00:00:16 #2427 [Verbose] >     inl m2 = deriv (shift (dt / 2) m1 st0)
00:00:16 #2428 [Verbose] >     inl m3 = deriv (shift dt m2 st0)
00:00:16 #2429 [Verbose] >     shift (dt / 6) (m0 +++ m1 +++ m1 +++ m2 +++ m2 +++ m3) st0
00:00:16 #2430 [Verbose] >
00:00:16 #2431 [Verbose] > inl exponential (_, x0, v0) =
00:00:16 #2432 [Verbose] >     1f64, v0, x0
00:00:16 #2433 [Verbose] >
00:00:16 #2434 [Verbose] > inl of_state_1d (state_1d (t, x, v)) =
00:00:16 #2435 [Verbose] >     t, x, v
00:00:17 #2436 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1082-8216-82df51b72ded/main.spi
00:00:17 #2437 [Verbose] >
00:00:17 #2438 [Verbose] > ╭─[ 155.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #2439 [Verbose] > │ ()                                                                           │
00:00:17 #2440 [Verbose] > │                                                                              │
00:00:17 #2441 [Verbose] > │                                                                              │
00:00:17 #2442 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2443 [Verbose] >
00:00:17 #2444 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2445 [Verbose] > // // test
00:00:17 #2446 [Verbose] >
00:00:17 #2447 [Verbose] > solver (euler 0.01) (of_state_1d >> exponential >> state_1d) (state_1d (0, 1,
00:00:17 #2448 [Verbose] > 1)) 800i32
00:00:17 #2449 [Verbose] > |> _equal (state_1d (7.999999999999874, 2864.8311229272326, 2864.8311229272326))
00:00:17 #2450 [Verbose] >
00:00:17 #2451 [Verbose] > solver (euler_cromer_1d 0.1) (of_state_1d >> exponential >> rrr) (state_1d (0,
00:00:17 #2452 [Verbose] > 1, 1)) 80i32
00:00:17 #2453 [Verbose] > |> _equal (state_1d (7.999999999999988, 3043.379244966009, 2895.0121485099035))
00:00:17 #2454 [Verbose] >
00:00:17 #2455 [Verbose] > solver (runge_kutta_4 1) (of_state_1d >> exponential >> rrr) (state_1d (0, 1,
00:00:17 #2456 [Verbose] > 1)) 8i32
00:00:17 #2457 [Verbose] > |> _equal (state_1d (8.0, 2894.789038540849, 2894.789038540849))
00:00:17 #2458 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1096-9679-9478d48881e7/main.spi
00:00:17 #2459 [Verbose] >
00:00:17 #2460 [Verbose] > ╭─[ 256.34ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #2461 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:17 #2462 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (7.999999999999874,     │
00:00:17 #2463 [Verbose] > │ 2864.8311229272326, 2864.8311229272326)} / expected: %A{struct               │
00:00:17 #2464 [Verbose] > │ (7.999999999999874, 2864.8311229272326, 2864.8311229272326)}"                │
00:00:17 #2465 [Verbose] > │     let v1 : string = $"__expect / actual: %A{struct (7.999999999999988,     │
00:00:17 #2466 [Verbose] > │ 3043.379244966009, 2895.0121485099035)} / expected: %A{struct                │
00:00:17 #2467 [Verbose] > │ (7.999999999999988, 3043.379244966009, 2895.0121485099035)}"                 │
00:00:17 #2468 [Verbose] > │     let v2 : string = $"__expect / actual: %A{struct (8.0,                   │
00:00:17 #2469 [Verbose] > │ 2894.789038540849, 2894.789038540849)} / expected: %A{struct (8.0,           │
00:00:17 #2470 [Verbose] > │ 2894.789038540849, 2894.789038540849)}"                                      │
00:00:17 #2471 [Verbose] > │     ()                                                                       │
00:00:17 #2472 [Verbose] > │ method0()                                                                    │
00:00:17 #2473 [Verbose] > │                                                                              │
00:00:17 #2474 [Verbose] > │                                                                              │
00:00:17 #2475 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2476 [Verbose] >
00:00:17 #2477 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 #2478 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 #2479 [Verbose] > │ ## vec                                                                       │
00:00:17 #2480 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2481 [Verbose] >
00:00:17 #2482 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2483 [Verbose] > type vec =
00:00:17 #2484 [Verbose] >     {
00:00:17 #2485 [Verbose] >         x : f64
00:00:17 #2486 [Verbose] >         y : f64
00:00:17 #2487 [Verbose] >         z : f64
00:00:17 #2488 [Verbose] >     }
00:00:17 #2489 [Verbose] >
00:00:17 #2490 [Verbose] > inl vec x y z : vec =
00:00:17 #2491 [Verbose] >     { x y z }
00:00:17 #2492 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1122-2245-2a5897b0f14c/main.spi
00:00:17 #2493 [Verbose] >
00:00:17 #2494 [Verbose] > ╭─[ 146.08ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #2495 [Verbose] > │ ()                                                                           │
00:00:17 #2496 [Verbose] > │                                                                              │
00:00:17 #2497 [Verbose] > │                                                                              │
00:00:17 #2498 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2499 [Verbose] >
00:00:17 #2500 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2501 [Verbose] > // // test
00:00:17 #2502 [Verbose] >
00:00:17 #2503 [Verbose] > vec 1 2 3 .z
00:00:17 #2504 [Verbose] > |> _equal 3
00:00:17 #2505 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1137-3710-320c196c37bc/main.spi
00:00:17 #2506 [Verbose] >
00:00:17 #2507 [Verbose] > ╭─[ 146.48ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #2508 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:17 #2509 [Verbose] > │     let v0 : string = $"__expect / actual: %A{3.0} / expected: %A{3.0}"      │
00:00:17 #2510 [Verbose] > │     ()                                                                       │
00:00:17 #2511 [Verbose] > │ method0()                                                                    │
00:00:17 #2512 [Verbose] > │                                                                              │
00:00:17 #2513 [Verbose] > │                                                                              │
00:00:17 #2514 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2515 [Verbose] >
00:00:17 #2516 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 #2517 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 #2518 [Verbose] > │ ### consts                                                                   │
00:00:17 #2519 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2520 [Verbose] >
00:00:17 #2521 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2522 [Verbose] > inl i_hat () = vec 1 0 0
00:00:17 #2523 [Verbose] > inl j_hat () = vec 0 1 0
00:00:17 #2524 [Verbose] > inl k_hat () = vec 0 0 1
00:00:17 #2525 [Verbose] > inl zero_vec () = vec 0 0 0
00:00:17 #2526 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1151-5186-5e63ac7ed92b/main.spi
00:00:17 #2527 [Verbose] >
00:00:17 #2528 [Verbose] > ╭─[ 149.03ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #2529 [Verbose] > │ ()                                                                           │
00:00:17 #2530 [Verbose] > │                                                                              │
00:00:17 #2531 [Verbose] > │                                                                              │
00:00:17 #2532 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2533 [Verbose] >
00:00:17 #2534 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 #2535 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 #2536 [Verbose] > │ ### ^+^                                                                      │
00:00:17 #2537 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2538 [Verbose] >
00:00:17 #2539 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2540 [Verbose] > inl (^+^) (a : vec) (b : vec) =
00:00:17 #2541 [Verbose] >     vec (a.x + b.x) (a.y + b.y) (a.z + b.z)
00:00:17 #2542 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1166-6690-6f84b3fe0044/main.spi
00:00:17 #2543 [Verbose] >
00:00:17 #2544 [Verbose] > ╭─[ 145.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 #2545 [Verbose] > │ ()                                                                           │
00:00:17 #2546 [Verbose] > │                                                                              │
00:00:17 #2547 [Verbose] > │                                                                              │
00:00:17 #2548 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 #2549 [Verbose] >
00:00:17 #2550 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 #2551 [Verbose] > // // test
00:00:17 #2552 [Verbose] >
00:00:17 #2553 [Verbose] > vec 1 2 3 ^+^ vec 4 5 6
00:00:17 #2554 [Verbose] > |> _equal (vec 5 7 9)
00:00:18 #2555 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1181-8150-88a6f3c532bf/main.spi
00:00:18 #2556 [Verbose] >
00:00:18 #2557 [Verbose] > ╭─[ 173.80ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2558 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:18 #2559 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (5.0, 7.0, 9.0)} /      │
00:00:18 #2560 [Verbose] > │ expected: %A{struct (5.0, 7.0, 9.0)}"                                        │
00:00:18 #2561 [Verbose] > │     ()                                                                       │
00:00:18 #2562 [Verbose] > │ method0()                                                                    │
00:00:18 #2563 [Verbose] > │                                                                              │
00:00:18 #2564 [Verbose] > │                                                                              │
00:00:18 #2565 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2566 [Verbose] >
00:00:18 #2567 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 #2568 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 #2569 [Verbose] > │ ### sum_vec                                                                  │
00:00:18 #2570 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2571 [Verbose] >
00:00:18 #2572 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2573 [Verbose] > inl sum_vec vs =
00:00:18 #2574 [Verbose] >     vs |> listm.fold (^+^) (zero_vec ())
00:00:18 #2575 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1198-9898-9fcbcb367966/main.spi
00:00:18 #2576 [Verbose] >
00:00:18 #2577 [Verbose] > ╭─[ 141.59ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2578 [Verbose] > │ ()                                                                           │
00:00:18 #2579 [Verbose] > │                                                                              │
00:00:18 #2580 [Verbose] > │                                                                              │
00:00:18 #2581 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2582 [Verbose] >
00:00:18 #2583 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2584 [Verbose] > // // test
00:00:18 #2585 [Verbose] >
00:00:18 #2586 [Verbose] > [[ vec 1 2 3; vec 4 5 6 ]]
00:00:18 #2587 [Verbose] > |> sum_vec
00:00:18 #2588 [Verbose] > |> _equal (vec 5 7 9)
00:00:18 #2589 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1213-1315-16ae71065c77/main.spi
00:00:18 #2590 [Verbose] >
00:00:18 #2591 [Verbose] > ╭─[ 138.36ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2592 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:18 #2593 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (5.0, 7.0, 9.0)} /      │
00:00:18 #2594 [Verbose] > │ expected: %A{struct (5.0, 7.0, 9.0)}"                                        │
00:00:18 #2595 [Verbose] > │     ()                                                                       │
00:00:18 #2596 [Verbose] > │ method0()                                                                    │
00:00:18 #2597 [Verbose] > │                                                                              │
00:00:18 #2598 [Verbose] > │                                                                              │
00:00:18 #2599 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2600 [Verbose] >
00:00:18 #2601 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 #2602 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 #2603 [Verbose] > │ ### *^                                                                       │
00:00:18 #2604 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2605 [Verbose] >
00:00:18 #2606 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2607 [Verbose] > inl (*^) c { x y z } =
00:00:18 #2608 [Verbose] >     vec (c * x) (c * y) (c * z)
00:00:18 #2609 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1227-2710-27e28b40fcb2/main.spi
00:00:18 #2610 [Verbose] >
00:00:18 #2611 [Verbose] > ╭─[ 131.62ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2612 [Verbose] > │ ()                                                                           │
00:00:18 #2613 [Verbose] > │                                                                              │
00:00:18 #2614 [Verbose] > │                                                                              │
00:00:18 #2615 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2616 [Verbose] >
00:00:18 #2617 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2618 [Verbose] > // // test
00:00:18 #2619 [Verbose] >
00:00:18 #2620 [Verbose] > 5 *^ vec 1 2 3
00:00:18 #2621 [Verbose] > |> _equal (vec 5 10 15)
00:00:18 #2622 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1240-4029-46244016109b/main.spi
00:00:18 #2623 [Verbose] >
00:00:18 #2624 [Verbose] > ╭─[ 146.92ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2625 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:18 #2626 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (5.0, 10.0, 15.0)} /    │
00:00:18 #2627 [Verbose] > │ expected: %A{struct (5.0, 10.0, 15.0)}"                                      │
00:00:18 #2628 [Verbose] > │     ()                                                                       │
00:00:18 #2629 [Verbose] > │ method0()                                                                    │
00:00:18 #2630 [Verbose] > │                                                                              │
00:00:18 #2631 [Verbose] > │                                                                              │
00:00:18 #2632 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2633 [Verbose] >
00:00:18 #2634 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2635 [Verbose] > // // test
00:00:18 #2636 [Verbose] >
00:00:18 #2637 [Verbose] > 3 *^ i_hat () ^+^ 4 *^ k_hat ()
00:00:18 #2638 [Verbose] > |> _equal (vec 3 0 4)
00:00:18 #2639 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1254-5498-5b89b46022e5/main.spi
00:00:18 #2640 [Verbose] >
00:00:18 #2641 [Verbose] > ╭─[ 135.75ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2642 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:18 #2643 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (3.0, 0.0, 4.0)} /      │
00:00:18 #2644 [Verbose] > │ expected: %A{struct (3.0, 0.0, 4.0)}"                                        │
00:00:18 #2645 [Verbose] > │     ()                                                                       │
00:00:18 #2646 [Verbose] > │ method0()                                                                    │
00:00:18 #2647 [Verbose] > │                                                                              │
00:00:18 #2648 [Verbose] > │                                                                              │
00:00:18 #2649 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2650 [Verbose] >
00:00:18 #2651 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 #2652 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 #2653 [Verbose] > │ ### ^*                                                                       │
00:00:18 #2654 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2655 [Verbose] >
00:00:18 #2656 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2657 [Verbose] > inl (^*) v c =
00:00:18 #2658 [Verbose] >     (*^) c v
00:00:18 #2659 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1268-6868-60928fa0758d/main.spi
00:00:18 #2660 [Verbose] >
00:00:18 #2661 [Verbose] > ╭─[ 124.87ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 #2662 [Verbose] > │ ()                                                                           │
00:00:18 #2663 [Verbose] > │                                                                              │
00:00:18 #2664 [Verbose] > │                                                                              │
00:00:18 #2665 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 #2666 [Verbose] >
00:00:18 #2667 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 #2668 [Verbose] > // // test
00:00:18 #2669 [Verbose] >
00:00:18 #2670 [Verbose] > vec 1 2 3 ^* 5
00:00:18 #2671 [Verbose] > |> _equal (vec 5 10 15)
00:00:19 #2672 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1281-8116-8d03026bc09e/main.spi
00:00:19 #2673 [Verbose] >
00:00:19 #2674 [Verbose] > ╭─[ 141.65ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2675 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:19 #2676 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (5.0, 10.0, 15.0)} /    │
00:00:19 #2677 [Verbose] > │ expected: %A{struct (5.0, 10.0, 15.0)}"                                      │
00:00:19 #2678 [Verbose] > │     ()                                                                       │
00:00:19 #2679 [Verbose] > │ method0()                                                                    │
00:00:19 #2680 [Verbose] > │                                                                              │
00:00:19 #2681 [Verbose] > │                                                                              │
00:00:19 #2682 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2683 [Verbose] >
00:00:19 #2684 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #2685 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #2686 [Verbose] > │ ### ^/                                                                       │
00:00:19 #2687 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2688 [Verbose] >
00:00:19 #2689 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2690 [Verbose] > inl (^/) { x y z } c =
00:00:19 #2691 [Verbose] >     vec (x / c) (y / c) (z / c)
00:00:19 #2692 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1295-9543-950807e9295e/main.spi
00:00:19 #2693 [Verbose] >
00:00:19 #2694 [Verbose] > ╭─[ 148.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2695 [Verbose] > │ ()                                                                           │
00:00:19 #2696 [Verbose] > │                                                                              │
00:00:19 #2697 [Verbose] > │                                                                              │
00:00:19 #2698 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2699 [Verbose] >
00:00:19 #2700 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2701 [Verbose] > // // test
00:00:19 #2702 [Verbose] >
00:00:19 #2703 [Verbose] > vec 1 2 3 ^/ 5
00:00:19 #2704 [Verbose] > |> _equal (vec 0.2 0.4 0.6)
00:00:19 #2705 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1310-1042-1dbd0707a807/main.spi
00:00:19 #2706 [Verbose] >
00:00:19 #2707 [Verbose] > ╭─[ 148.13ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2708 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:19 #2709 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (0.2, 0.4, 0.6)} /      │
00:00:19 #2710 [Verbose] > │ expected: %A{struct (0.2, 0.4, 0.6)}"                                        │
00:00:19 #2711 [Verbose] > │     ()                                                                       │
00:00:19 #2712 [Verbose] > │ method0()                                                                    │
00:00:19 #2713 [Verbose] > │                                                                              │
00:00:19 #2714 [Verbose] > │                                                                              │
00:00:19 #2715 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2716 [Verbose] >
00:00:19 #2717 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #2718 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #2719 [Verbose] > │ ### negate_vec                                                               │
00:00:19 #2720 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2721 [Verbose] >
00:00:19 #2722 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2723 [Verbose] > inl negate_vec v =
00:00:19 #2724 [Verbose] >     v ^* -1
00:00:19 #2725 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1325-2536-21492966dc5a/main.spi
00:00:19 #2726 [Verbose] >
00:00:19 #2727 [Verbose] > ╭─[ 149.60ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2728 [Verbose] > │ ()                                                                           │
00:00:19 #2729 [Verbose] > │                                                                              │
00:00:19 #2730 [Verbose] > │                                                                              │
00:00:19 #2731 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2732 [Verbose] >
00:00:19 #2733 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2734 [Verbose] > // // test
00:00:19 #2735 [Verbose] >
00:00:19 #2736 [Verbose] > vec 1 2 3
00:00:19 #2737 [Verbose] > |> negate_vec
00:00:19 #2738 [Verbose] > |> _equal (vec -1 -2 -3)
00:00:19 #2739 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1340-4030-4ab2b390d480/main.spi
00:00:19 #2740 [Verbose] >
00:00:19 #2741 [Verbose] > ╭─[ 169.44ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2742 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:19 #2743 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (-1.0, -2.0, -3.0)} /   │
00:00:19 #2744 [Verbose] > │ expected: %A{struct (-1.0, -2.0, -3.0)}"                                     │
00:00:19 #2745 [Verbose] > │     ()                                                                       │
00:00:19 #2746 [Verbose] > │ method0()                                                                    │
00:00:19 #2747 [Verbose] > │                                                                              │
00:00:19 #2748 [Verbose] > │                                                                              │
00:00:19 #2749 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2750 [Verbose] >
00:00:19 #2751 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #2752 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #2753 [Verbose] > │ ### ^-^                                                                      │
00:00:19 #2754 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2755 [Verbose] >
00:00:19 #2756 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2757 [Verbose] > inl (^-^) a b =
00:00:19 #2758 [Verbose] >     a ^+^ (negate_vec b)
00:00:19 #2759 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1357-5731-50b088f90629/main.spi
00:00:19 #2760 [Verbose] >
00:00:19 #2761 [Verbose] > ╭─[ 125.06ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2762 [Verbose] > │ ()                                                                           │
00:00:19 #2763 [Verbose] > │                                                                              │
00:00:19 #2764 [Verbose] > │                                                                              │
00:00:19 #2765 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2766 [Verbose] >
00:00:19 #2767 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2768 [Verbose] > // // test
00:00:19 #2769 [Verbose] >
00:00:19 #2770 [Verbose] > vec 1 2 3 ^-^ vec 4 5 6
00:00:19 #2771 [Verbose] > |> _equal (vec -3 -3 -3)
00:00:19 #2772 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1369-6984-644c71d3c933/main.spi
00:00:19 #2773 [Verbose] >
00:00:19 #2774 [Verbose] > ╭─[ 130.22ms - stdout ]────────────────────────────────────────────────────────╮
00:00:19 #2775 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:19 #2776 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (-3.0, -3.0, -3.0)} /   │
00:00:19 #2777 [Verbose] > │ expected: %A{struct (-3.0, -3.0, -3.0)}"                                     │
00:00:19 #2778 [Verbose] > │     ()                                                                       │
00:00:19 #2779 [Verbose] > │ method0()                                                                    │
00:00:19 #2780 [Verbose] > │                                                                              │
00:00:19 #2781 [Verbose] > │                                                                              │
00:00:19 #2782 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2783 [Verbose] >
00:00:19 #2784 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:19 #2785 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:19 #2786 [Verbose] > │ ### <.>                                                                      │
00:00:19 #2787 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:19 #2788 [Verbose] >
00:00:19 #2789 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:19 #2790 [Verbose] > inl (<.>) { x = ax y = ay z = az } { x = bx y = by z = bz } =
00:00:19 #2791 [Verbose] >     ax * bx + ay * by + az * bz
00:00:20 #2792 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1382-8295-8ed056856a7c/main.spi
00:00:20 #2793 [Verbose] >
00:00:20 #2794 [Verbose] > ╭─[ 146.48ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2795 [Verbose] > │ ()                                                                           │
00:00:20 #2796 [Verbose] > │                                                                              │
00:00:20 #2797 [Verbose] > │                                                                              │
00:00:20 #2798 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2799 [Verbose] >
00:00:20 #2800 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2801 [Verbose] > // // test
00:00:20 #2802 [Verbose] >
00:00:20 #2803 [Verbose] > vec 1 2 3 <.> vec 4 5 6
00:00:20 #2804 [Verbose] > |> _equal 32
00:00:20 #2805 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1397-9779-92daca82337f/main.spi
00:00:20 #2806 [Verbose] >
00:00:20 #2807 [Verbose] > ╭─[ 162.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2808 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:20 #2809 [Verbose] > │     let v0 : string = $"__expect / actual: %A{32.0} / expected: %A{32.0}"    │
00:00:20 #2810 [Verbose] > │     ()                                                                       │
00:00:20 #2811 [Verbose] > │ method0()                                                                    │
00:00:20 #2812 [Verbose] > │                                                                              │
00:00:20 #2813 [Verbose] > │                                                                              │
00:00:20 #2814 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2815 [Verbose] >
00:00:20 #2816 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #2817 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #2818 [Verbose] > │ ### \>\<                                                                     │
00:00:20 #2819 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2820 [Verbose] >
00:00:20 #2821 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2822 [Verbose] > inl (><) (a : vec) (b : vec) =
00:00:20 #2823 [Verbose] >     vec
00:00:20 #2824 [Verbose] >         (a.y * b.z - a.z * b.y)
00:00:20 #2825 [Verbose] >         (a.z * b.x - a.x * b.z)
00:00:20 #2826 [Verbose] >         (a.x * b.y - a.y * b.x)
00:00:20 #2827 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1414-1400-12976216d080/main.spi
00:00:20 #2828 [Verbose] >
00:00:20 #2829 [Verbose] > ╭─[ 127.44ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2830 [Verbose] > │ ()                                                                           │
00:00:20 #2831 [Verbose] > │                                                                              │
00:00:20 #2832 [Verbose] > │                                                                              │
00:00:20 #2833 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2834 [Verbose] >
00:00:20 #2835 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2836 [Verbose] > // // test
00:00:20 #2837 [Verbose] >
00:00:20 #2838 [Verbose] > vec 1 2 3 >< vec 4 5 6
00:00:20 #2839 [Verbose] > |> _equal (vec -3 6 -3)
00:00:20 #2840 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1426-2680-21a3ff889103/main.spi
00:00:20 #2841 [Verbose] >
00:00:20 #2842 [Verbose] > ╭─[ 142.55ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2843 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:20 #2844 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (-3.0, 6.0, -3.0)} /    │
00:00:20 #2845 [Verbose] > │ expected: %A{struct (-3.0, 6.0, -3.0)}"                                      │
00:00:20 #2846 [Verbose] > │     ()                                                                       │
00:00:20 #2847 [Verbose] > │ method0()                                                                    │
00:00:20 #2848 [Verbose] > │                                                                              │
00:00:20 #2849 [Verbose] > │                                                                              │
00:00:20 #2850 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2851 [Verbose] >
00:00:20 #2852 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #2853 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #2854 [Verbose] > │ ### magnitude                                                                │
00:00:20 #2855 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2856 [Verbose] >
00:00:20 #2857 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2858 [Verbose] > inl magnitude v =
00:00:20 #2859 [Verbose] >     v <.> v |> sqrt
00:00:20 #2860 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1441-4121-42b0143d109a/main.spi
00:00:20 #2861 [Verbose] >
00:00:20 #2862 [Verbose] > ╭─[ 140.77ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2863 [Verbose] > │ ()                                                                           │
00:00:20 #2864 [Verbose] > │                                                                              │
00:00:20 #2865 [Verbose] > │                                                                              │
00:00:20 #2866 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2867 [Verbose] >
00:00:20 #2868 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2869 [Verbose] > // // test
00:00:20 #2870 [Verbose] >
00:00:20 #2871 [Verbose] > vec 1 2 3
00:00:20 #2872 [Verbose] > |> magnitude
00:00:20 #2873 [Verbose] > |> _almost_equal 3.7416573867739413
00:00:20 #2874 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1455-5531-54f80e1ec354/main.spi
00:00:20 #2875 [Verbose] >
00:00:20 #2876 [Verbose] > ╭─[ 124.88ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2877 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:20 #2878 [Verbose] > │     let v0 : string = $"__expect / actual: %A{3.7416573867739413} /          │
00:00:20 #2879 [Verbose] > │ expected: %A{3.7416573867739413}"                                            │
00:00:20 #2880 [Verbose] > │     ()                                                                       │
00:00:20 #2881 [Verbose] > │ method0()                                                                    │
00:00:20 #2882 [Verbose] > │                                                                              │
00:00:20 #2883 [Verbose] > │                                                                              │
00:00:20 #2884 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2885 [Verbose] >
00:00:20 #2886 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 #2887 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 #2888 [Verbose] > │ ### v1                                                                       │
00:00:20 #2889 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2890 [Verbose] >
00:00:20 #2891 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2892 [Verbose] > inl v1 t =
00:00:20 #2893 [Verbose] >     2 *^ (t ** 2 *^ i_hat () ^+^ 3 *^ (t ** 3 *^ j_hat () ^+^ t ** 4 *^ k_hat
00:00:20 #2894 [Verbose] > ()))
00:00:20 #2895 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1467-6790-6bf335f3ccac/main.spi
00:00:20 #2896 [Verbose] >
00:00:20 #2897 [Verbose] > ╭─[ 127.95ms - stdout ]────────────────────────────────────────────────────────╮
00:00:20 #2898 [Verbose] > │ ()                                                                           │
00:00:20 #2899 [Verbose] > │                                                                              │
00:00:20 #2900 [Verbose] > │                                                                              │
00:00:20 #2901 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 #2902 [Verbose] >
00:00:20 #2903 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:20 #2904 [Verbose] > // // test
00:00:20 #2905 [Verbose] >
00:00:20 #2906 [Verbose] > v1 1
00:00:20 #2907 [Verbose] > |> _equal (vec 2 6 6)
00:00:21 #2908 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1480-8072-809a4ac33d86/main.spi
00:00:21 #2909 [Verbose] >
00:00:21 #2910 [Verbose] > ╭─[ 130.70ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2911 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:21 #2912 [Verbose] > │     let v0 : string = $"__expect / actual: %A{struct (2.0, 6.0, 6.0)} /      │
00:00:21 #2913 [Verbose] > │ expected: %A{struct (2.0, 6.0, 6.0)}"                                        │
00:00:21 #2914 [Verbose] > │     ()                                                                       │
00:00:21 #2915 [Verbose] > │ method0()                                                                    │
00:00:21 #2916 [Verbose] > │                                                                              │
00:00:21 #2917 [Verbose] > │                                                                              │
00:00:21 #2918 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2919 [Verbose] >
00:00:21 #2920 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 #2921 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 #2922 [Verbose] > │ ### vec_derivative                                                           │
00:00:21 #2923 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2924 [Verbose] >
00:00:21 #2925 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2926 [Verbose] > type vec_derivative = (f64 -> vec) -> f64 -> vec
00:00:21 #2927 [Verbose] >
00:00:21 #2928 [Verbose] > inl vec_derivative dt : vec_derivative =
00:00:21 #2929 [Verbose] >     fun v t =>
00:00:21 #2930 [Verbose] >         (v (t + dt / 2) ^-^ v (t - dt / 2)) ^/ dt
00:00:21 #2931 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1493-9382-9363e2ea3e35/main.spi
00:00:21 #2932 [Verbose] >
00:00:21 #2933 [Verbose] > ╭─[ 125.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2934 [Verbose] > │ ()                                                                           │
00:00:21 #2935 [Verbose] > │                                                                              │
00:00:21 #2936 [Verbose] > │                                                                              │
00:00:21 #2937 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2938 [Verbose] >
00:00:21 #2939 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2940 [Verbose] > // // test
00:00:21 #2941 [Verbose] >
00:00:21 #2942 [Verbose] > vec_derivative 0.01 v1 3 .x
00:00:21 #2943 [Verbose] > |> _almost_equal (derivative 0.01 (v1 >> fun v => v.x) 3)
00:00:21 #2944 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1506-0635-09c1b23996a0/main.spi
00:00:21 #2945 [Verbose] >
00:00:21 #2946 [Verbose] > ╭─[ 131.22ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #2947 [Verbose] > │ let rec method0 () : unit =                                                  │
00:00:21 #2948 [Verbose] > │     let v0 : string = $"__expect / actual: %A{11.999999999999744} /          │
00:00:21 #2949 [Verbose] > │ expected: %A{11.999999999999744}"                                            │
00:00:21 #2950 [Verbose] > │     ()                                                                       │
00:00:21 #2951 [Verbose] > │ method0()                                                                    │
00:00:21 #2952 [Verbose] > │                                                                              │
00:00:21 #2953 [Verbose] > │                                                                              │
00:00:21 #2954 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2955 [Verbose] >
00:00:21 #2956 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:21 #2957 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:21 #2958 [Verbose] > │ ## states_ps                                                                 │
00:00:21 #2959 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #2960 [Verbose] >
00:00:21 #2961 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #2962 [Verbose] > nominal particle_state =
00:00:21 #2963 [Verbose] >     {
00:00:21 #2964 [Verbose] >         mass : f64
00:00:21 #2965 [Verbose] >         charge : f64
00:00:21 #2966 [Verbose] >         time : f64
00:00:21 #2967 [Verbose] >         pos_vec : vec
00:00:21 #2968 [Verbose] >         velocity : vec
00:00:21 #2969 [Verbose] >     }
00:00:21 #2970 [Verbose] >
00:00:21 #2971 [Verbose] > inl default_particle_state () : particle_state =
00:00:21 #2972 [Verbose] >     particle_state {
00:00:21 #2973 [Verbose] >         mass = 1
00:00:21 #2974 [Verbose] >         charge = 0
00:00:21 #2975 [Verbose] >         time = 0
00:00:21 #2976 [Verbose] >         pos_vec = zero_vec ()
00:00:21 #2977 [Verbose] >         velocity = zero_vec ()
00:00:21 #2978 [Verbose] >     }
00:00:21 #2979 [Verbose] >
00:00:21 #2980 [Verbose] > type one_body_force = particle_state -> vec
00:00:21 #2981 [Verbose] >
00:00:21 #2982 [Verbose] > nominal d_particle_state =
00:00:21 #2983 [Verbose] >     {
00:00:21 #2984 [Verbose] >         dmdt : f64
00:00:21 #2985 [Verbose] >         dqdt : f64
00:00:21 #2986 [Verbose] >         dtdt : f64
00:00:21 #2987 [Verbose] >         drdt : vec
00:00:21 #2988 [Verbose] >         dvdt : vec
00:00:21 #2989 [Verbose] >     }
00:00:21 #2990 [Verbose] >
00:00:21 #2991 [Verbose] > inl newton_second_ps (fs : list one_body_force) (st : particle_state) :
00:00:21 #2992 [Verbose] > d_particle_state =
00:00:21 #2993 [Verbose] >     inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:00:21 #2994 [Verbose] >     d_particle_state {
00:00:21 #2995 [Verbose] >         dmdt = 0
00:00:21 #2996 [Verbose] >         dqdt = 0
00:00:21 #2997 [Verbose] >         dtdt = 1
00:00:21 #2998 [Verbose] >         drdt = st.velocity
00:00:21 #2999 [Verbose] >         dvdt = f_net ^/ st.mass
00:00:21 #3000 [Verbose] >     }
00:00:21 #3001 [Verbose] >
00:00:21 #3002 [Verbose] > inl earth_surface_gravity (st : particle_state) =
00:00:21 #3003 [Verbose] >     inl g = 9.80665
00:00:21 #3004 [Verbose] >     -st.mass * g *^ k_hat ()
00:00:21 #3005 [Verbose] >
00:00:21 #3006 [Verbose] > inl air_resistance drag rho area (st : particle_state) =
00:00:21 #3007 [Verbose] >     -0.5 * drag * rho * area * magnitude st.velocity *^ st.velocity
00:00:21 #3008 [Verbose] >
00:00:21 #3009 [Verbose] > inl euler_cromer_ps dt (deriv : particle_state -> d_particle_state)
00:00:21 #3010 [Verbose] > (particle_state st) =
00:00:21 #3011 [Verbose] >     inl dst : d_particle_state = deriv (particle_state st)
00:00:21 #3012 [Verbose] >     inl v' = st.velocity ^+^ dst.dvdt ^* dt
00:00:21 #3013 [Verbose] >     particle_state { st with
00:00:21 #3014 [Verbose] >         time = st.time + dt
00:00:21 #3015 [Verbose] >         pos_vec = st.pos_vec ^+^ v' ^* dt
00:00:21 #3016 [Verbose] >         velocity = st.velocity ^+^ dst.dvdt ^* dt
00:00:21 #3017 [Verbose] >     }
00:00:21 #3018 [Verbose] >
00:00:21 #3019 [Verbose] > instance (+++) d_particle_state = fun (dps : d_particle_state) (dps' :
00:00:21 #3020 [Verbose] > d_particle_state) =>
00:00:21 #3021 [Verbose] >     d_particle_state {
00:00:21 #3022 [Verbose] >         dmdt = dps.dmdt + dps'.dmdt
00:00:21 #3023 [Verbose] >         dqdt = dps.dqdt + dps'.dqdt
00:00:21 #3024 [Verbose] >         dtdt = dps.dtdt + dps'.dtdt
00:00:21 #3025 [Verbose] >         drdt = dps.drdt ^+^ dps'.drdt
00:00:21 #3026 [Verbose] >         dvdt = dps.dvdt ^+^ dps'.dvdt
00:00:21 #3027 [Verbose] >     }
00:00:21 #3028 [Verbose] >
00:00:21 #3029 [Verbose] > instance scale d_particle_state = fun w (dps : d_particle_state) =>
00:00:21 #3030 [Verbose] >     d_particle_state {
00:00:21 #3031 [Verbose] >         dmdt = w * dps.dmdt
00:00:21 #3032 [Verbose] >         dqdt = w * dps.dqdt
00:00:21 #3033 [Verbose] >         dtdt = w * dps.dtdt
00:00:21 #3034 [Verbose] >         drdt = w *^ dps.drdt
00:00:21 #3035 [Verbose] >         dvdt = w *^ dps.dvdt
00:00:21 #3036 [Verbose] >     }
00:00:21 #3037 [Verbose] >
00:00:21 #3038 [Verbose] > instance shift particle_state = fun dt dps (particle_state st) =>
00:00:21 #3039 [Verbose] >     inl (d_particle_state dps) =
00:00:21 #3040 [Verbose] >         real
00:00:21 #3041 [Verbose] >             match dps with
00:00:21 #3042 [Verbose] >             | d_particle_state _ => dps
00:00:21 #3043 [Verbose] >     particle_state { st with
00:00:21 #3044 [Verbose] >         time = st.time + dps.dtdt * dt
00:00:21 #3045 [Verbose] >         pos_vec = st.pos_vec ^+^ dps.drdt ^* dt
00:00:21 #3046 [Verbose] >         velocity = st.velocity ^+^ dps.dvdt ^* dt
00:00:21 #3047 [Verbose] >     }
00:00:21 #3048 [Verbose] >
00:00:21 #3049 [Verbose] > inl states_ps (method : numerical_method particle_state d_particle_state) : _ ->
00:00:21 #3050 [Verbose] > _ -> i32 -> particle_state =
00:00:21 #3051 [Verbose] >     newton_second_ps >> method >> seq.iterate_
00:00:21 #3052 [Verbose] >
00:00:21 #3053 [Verbose] > inl z_ge0 sts =
00:00:21 #3054 [Verbose] >     sts
00:00:21 #3055 [Verbose] >     |> seq.take_while_ (fun (particle_state st) _ => st.pos_vec.z >= 0)
00:00:21 #3056 [Verbose] >
00:00:21 #3057 [Verbose] > inl trajectory sts =
00:00:21 #3058 [Verbose] >     sts |> listm.map (fun (particle_state st) => st.pos_vec.y, st.pos_vec.z)
00:00:21 #3059 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1520-2005-29d02d8cb5ef/main.spi
00:00:21 #3060 [Verbose] >
00:00:21 #3061 [Verbose] > ╭─[ 135.48ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #3062 [Verbose] > │ ()                                                                           │
00:00:21 #3063 [Verbose] > │                                                                              │
00:00:21 #3064 [Verbose] > │                                                                              │
00:00:21 #3065 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #3066 [Verbose] >
00:00:21 #3067 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #3068 [Verbose] > // // test
00:00:21 #3069 [Verbose] >
00:00:21 #3070 [Verbose] > inl update_ps (method : numerical_method particle_state d_particle_state) =
00:00:21 #3071 [Verbose] >     newton_second_ps >> method
00:00:21 #3072 [Verbose] >
00:00:21 #3073 [Verbose] > inl position_ps (method : numerical_method particle_state d_particle_state) fs
00:00:21 #3074 [Verbose] > st t =
00:00:21 #3075 [Verbose] >     inl states : i32 -> particle_state = states_ps method fs st
00:00:21 #3076 [Verbose] >     inl dt = (states 1).time - (states 0).time
00:00:21 #3077 [Verbose] >     inl num_steps = t / dt |> math.round |> abs
00:00:21 #3078 [Verbose] >     inl st1 = solver' method (newton_second_ps fs) st num_steps
00:00:21 #3079 [Verbose] >     st1.pos_vec
00:00:21 #3080 [Verbose] >
00:00:21 #3081 [Verbose] > inl sun_gravity (st : particle_state) : vec =
00:00:21 #3082 [Verbose] >     inl big_g = 0.0000000000667408
00:00:21 #3083 [Verbose] >     inl sun_mass = 1988480000000000000000000000000
00:00:21 #3084 [Verbose] >     -big_g * sun_mass * st.mass *^ st.pos_vec ^/ magnitude st.pos_vec ** 3
00:00:21 #3085 [Verbose] >
00:00:21 #3086 [Verbose] > inl wind_force v_wind drag rho area (st : particle_state) =
00:00:21 #3087 [Verbose] >     inl v_rel = st.velocity ^-^ v_wind
00:00:21 #3088 [Verbose] >     -0.5 * drag * rho * area * magnitude v_rel *^ v_rel
00:00:21 #3089 [Verbose] >
00:00:21 #3090 [Verbose] > inl rock_state () =
00:00:21 #3091 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:21 #3092 [Verbose] >     particle_state { default_particle_state' with
00:00:21 #3093 [Verbose] >         mass = 2
00:00:21 #3094 [Verbose] >         velocity = vec 3 0 4
00:00:21 #3095 [Verbose] >     }
00:00:21 #3096 [Verbose] >
00:00:21 #3097 [Verbose] > inl halley_update dt =
00:00:21 #3098 [Verbose] >     update_ps (euler_cromer_ps dt) [[ sun_gravity ]]
00:00:21 #3099 [Verbose] >
00:00:21 #3100 [Verbose] > inl halley_initial () =
00:00:21 #3101 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:21 #3102 [Verbose] >     particle_state { default_particle_state' with
00:00:21 #3103 [Verbose] >         mass = 220000000000000
00:00:21 #3104 [Verbose] >         pos_vec = 87660000000 *^ i_hat ()
00:00:21 #3105 [Verbose] >         velocity = 54569 *^ j_hat ()
00:00:21 #3106 [Verbose] >     }
00:00:21 #3107 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1533-3320-3c3d7a2d9eec/main.spi
00:00:21 #3108 [Verbose] >
00:00:21 #3109 [Verbose] > ╭─[ 131.41ms - stdout ]────────────────────────────────────────────────────────╮
00:00:21 #3110 [Verbose] > │ ()                                                                           │
00:00:21 #3111 [Verbose] > │                                                                              │
00:00:21 #3112 [Verbose] > │                                                                              │
00:00:21 #3113 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:21 #3114 [Verbose] >
00:00:21 #3115 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:21 #3116 [Verbose] > // // test
00:00:21 #3117 [Verbose] >
00:00:21 #3118 [Verbose] > inl baseball_forces () =
00:00:21 #3119 [Verbose] >     inl area = pi * (0.074 / 2) ** 2
00:00:21 #3120 [Verbose] >     [[
00:00:21 #3121 [Verbose] >         earth_surface_gravity
00:00:21 #3122 [Verbose] >         air_resistance 0.3 1.225 area
00:00:21 #3123 [Verbose] >     ]]
00:00:21 #3124 [Verbose] >
00:00:21 #3125 [Verbose] > inl baseball_trajectory dt v0 theta_deg =
00:00:21 #3126 [Verbose] >     inl theta_rad = theta_deg * pi / 180
00:00:21 #3127 [Verbose] >     inl vy0 = v0 * cos theta_rad
00:00:21 #3128 [Verbose] >     inl vz0 = v0 * sin theta_rad
00:00:21 #3129 [Verbose] >     inl initial_state =
00:00:21 #3130 [Verbose] >         particle_state {
00:00:21 #3131 [Verbose] >             mass = 0.145
00:00:21 #3132 [Verbose] >             charge = 0
00:00:21 #3133 [Verbose] >             time = 0
00:00:21 #3134 [Verbose] >             pos_vec = zero_vec ()
00:00:21 #3135 [Verbose] >             velocity = vec 0 vy0 vz0
00:00:21 #3136 [Verbose] >         }
00:00:21 #3137 [Verbose] >     states_ps (euler_cromer_ps dt) (baseball_forces ()) initial_state
00:00:21 #3138 [Verbose] >     >> Some
00:00:21 #3139 [Verbose] >     |> z_ge0
00:00:21 #3140 [Verbose] >     |> trajectory
00:00:21 #3141 [Verbose] >
00:00:21 #3142 [Verbose] > inl baseball_range dt v0 theta_deg =
00:00:21 #3143 [Verbose] >     baseball_trajectory dt v0 theta_deg
00:00:21 #3144 [Verbose] >     |> listm.fold (fun _ (y, _) => y) 0
00:00:21 #3145 [Verbose] >
00:00:21 #3146 [Verbose] > inl x : a _ f64 = am'.init_series 10 80 1
00:00:21 #3147 [Verbose] > inl y = x |> am.map (baseball_range 0.01 45)
00:00:21 #3148 [Verbose] > "range for a baseball hit at 45 m/s",
00:00:21 #3149 [Verbose] > "angle above horizontal (degrees)",
00:00:21 #3150 [Verbose] > "",
00:00:21 #3151 [Verbose] > ;[[ "horizontal range (m)", x, y ]]
00:00:21 #3152 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1546-4635-42ade69eef45/main.spi
00:00:22 #3153 [Verbose] >
00:00:22 #3154 [Verbose] > ╭─[ 807.95ms - return value ]──────────────────────────────────────────────────╮
00:00:22 #3155 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:22 #3156 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:22 #3157 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:22 #3158 [Verbose] > │ stroke="none"/>                                                              │
00:00:22 #3159 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:22 #3160 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:22 #3161 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:22 #3162 [Verbose] > │ range for a baseball hit at 45 m/s                                           │
00:00:22 #3163 [Verbose] > │ </text>                                                                      │
00:00:22 #3164 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="55" y1="424" x2="55" │
00:00:22 #3165 [Verbose] > │ y2="75"/>                                                                    │
00:00:22 #3166 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:00:22 #3167 [Verbose] > │ y2="75"/>                                                                    │
00:00:22 #3168 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:22 #3169 [Verbose] > │ y2="75"/>                                                                    │
00:00:22 #3170 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:00:22 #3171 [Verbose] > │ y2="75"/>                                                                    │
00:00:22 #3172 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="...                         │
00:00:22 #3173 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #3174 [Verbose] >
00:00:22 #3175 [Verbose] > ╭─[ 811.05ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 #3176 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:00:22 #3177 [Verbose] > │ and UH0 =                                                                    │
00:00:22 #3178 [Verbose] > │     | UH0_0 of float * float * float * float * float * float * float * float │
00:00:22 #3179 [Verbose] > │ * float * UH0                                                                │
00:00:22 #3180 [Verbose] > │     | UH0_1                                                                  │
00:00:22 #3181 [Verbose] > │ and UH1 =                                                                    │
00:00:22 #3182 [Verbose] > │     | UH1_0 of float * float * UH1                                           │
00:00:22 #3183 [Verbose] > │     | UH1_1                                                                  │
00:00:22 #3184 [Verbose] > │ let rec method1 (v0 : Mut0) : bool =                                         │
00:00:22 #3185 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:00:22 #3186 [Verbose] > │     let v2 : bool = v1 < 71                                                  │
00:00:22 #3187 [Verbose] > │     v2                                                                       │
00:00:22 #3188 [Verbose] > │ and method2 (v0 : int32, v1 : Mut0) : bool =                                 │
00:00:22 #3189 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:00:22 #3190 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:00:22 #3191 [Verbose] > │     v3                                                                       │
00:00:22 #3192 [Verbose] > │ and method4 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, v5  │
00:00:22 #3193 [Verbose] > │ : float, v6 : float, v7 : float, v8 : float, v9 : int32) : struct (float *   │
00:00:22 #3194 [Verbose] > │ float * float * float * float * float * float * float * float) =             │
00:00:22 #3195 [Verbose] > │     let v10 : bool = v9 <= 0                                                 │
00:00:22 #3196 [Verbose] > │     if v10 then                                                              │
00:00:22 #3197 [Verbose] > │         struct (v0, v1, v2, v3, v4, v5, v6, v7, v8)                          │
00:00:22 #3198 [Verbose] > │     else                                                                     │
00:00:22 #3199 [Verbose] > │         let v11 : float = v6 * v6                                            │
00:00:22 #3200 [Verbose] > │         let v12 : float = v7 * v7                                            │
00:00:22 #3201 [Verbose] > │         let v13 : float = v11 + v12                                          │
00:00:22 #3202 [Verbose] > │         let v14 : float = v8 * v8                                            │
00:00:22 #3203 [Verbose] > │         let v15 : float = v13 + v14                                          │
00:00:22 #3204 [Verbose] > │         let v16 : float = sqrt v15                                           │
00:00:22 #3205 [Verbose] > │         let v17 : float = -0.0007902794129829633 * v16                       │
00:00:22 #3206 [Verbose] > │         let v18 : float = v17 * v6                                           │
00:00:22 #3207 [Verbose] > │         let v19 : float = v17 * v7                                           │
00:00:22 #3208 [Verbose] > │         let v20 : float = v17 * v8                                           │
00:00:22 #3209 [Verbose] > │         let v21 : float =  -v1                                               │
00:00:22 #3210 [Verbose] > │         let v22 : float = v21 * 9.80665                                      │
00:00:22 #3211 [Verbose] > │         let v23 : float = v22 * 0.0                                          │
00:00:22 #3212 [Verbose] > │         let v24 : float = v23 + v18                                          │
00:00:22 #3213 [Verbose] > │         let v25 : float = v23 + v19                                          │
00:00:22 #3214 [Verbose] > │         let v26 : float = v22 + v20                                          │
00:00:22 #3215 [Verbose] > │         let v27 : float = v24 / v1                                           │
00:00:22 #3216 [Verbose] > │         let v28 : float = v25 / v1                                           │
00:00:22 #3217 [Verbose] > │         let v29 : float = v26 / v1                                           │
00:00:22 #3218 [Verbose] > │         let v30 : float = 0.01 * v27                                         │
00:00:22 #3219 [Verbose] > │         let v31 : float = 0.01 * v28                                         │
00:00:22 #3220 [Verbose] > │         let v32 : float = 0.01 * v29                                         │
00:00:22 #3221 [Verbose] > │         let v33 : float = v6 + v30                                           │
00:00:22 #3222 [Verbose] > │         let v34 : float = v7 + v31                                           │
00:00:22 #3223 [Verbose] > │         let v35 : float = v8 + v32                                           │
00:00:22 #3224 [Verbose] > │         let v36 : float = v5 + 0.01                                          │
00:00:22 #3225 [Verbose] > │         let v37 : float = 0.01 * v33                                         │
00:00:22 #3226 [Verbose] > │         let v38 : float = 0.01 * v34                                         │
00:00:22 #3227 [Verbose] > │         let v39 : float = 0.01 * v35                                         │
00:00:22 #3228 [Verbose] > │         let v40 : float = v2 + v37                                           │
00:00:22 #3229 [Verbose] > │         let v41 : float = v3 + v38                                           │
00:00:22 #3230 [Verbose] > │         let v42 : float = v4 + v39                                           │
00:00:22 #3231 [Verbose] > │         let v43 : int32 = v9 - 1                                             │
00:00:22 #3232 [Verbose] > │         method4(v0, v1, v40, v41, v42, v36, v33, v34, v35, v43)              │
00:00:22 #3233 [Verbose] > │ and method5 (v0 : UH0, v1 : UH0) : UH0 =                                     │
00:00:22 #3234 [Verbose] > │     match v0 with                                                            │
00:00:22 #3235 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:22 #3236 [Verbose] > │         let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1)       │
00:00:22 #3237 [Verbose] > │         method5(v11, v12)                                                    │
00:00:22 #3238 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:22 #3239 [Verbose] > │         v1                                                                   │
00:00:22 #3240 [Verbose] > │ and method3 (v0 : float, v1 : float, v2 : UH0, v3 : int32) : UH0 =           │
00:00:22 #3241 [Verbose] > │     let v4 : float = 0.0                                                     │
00:00:22 #3242 [Verbose] > │     let v5 : float = 0.145                                                   │
00:00:22 #3243 [Verbose] > │     let v6 : float = 0.0                                                     │
00:00:22 #3244 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:22 #3245 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:22 #3246 [Verbose] > │     let v9 : float = 0.0                                                     │
00:00:22 #3247 [Verbose] > │     let v10 : float = 0.0                                                    │
00:00:22 #3248 [Verbose] > │     let struct (v11 : float, v12 : float, v13 : float, v14 : float, v15 :    │
00:00:22 #3249 [Verbose] > │ float, v16 : float, v17 : float, v18 : float, v19 : float) = method4(v4, v5, │
00:00:22 #3250 [Verbose] > │ v6, v7, v8, v9, v10, v0, v1, v3)                                             │
00:00:22 #3251 [Verbose] > │     let v20 : bool = v15 >= 0.0                                              │
00:00:22 #3252 [Verbose] > │     if v20 then                                                              │
00:00:22 #3253 [Verbose] > │         let v21 : UH0 = UH0_0(v11, v12, v13, v14, v15, v16, v17, v18, v19,   │
00:00:22 #3254 [Verbose] > │ v2)                                                                          │
00:00:22 #3255 [Verbose] > │         let v22 : int32 = v3 + 1                                             │
00:00:22 #3256 [Verbose] > │         method3(v0, v1, v21, v22)                                            │
00:00:22 #3257 [Verbose] > │     else                                                                     │
00:00:22 #3258 [Verbose] > │         let v24 : UH0 = UH0_1                                                │
00:00:22 #3259 [Verbose] > │         method5(v2, v24)                                                     │
00:00:22 #3260 [Verbose] > │ and method6 (v0 : UH0, v1 : UH1) : UH1 =                                     │
00:00:22 #3261 [Verbose] > │     match v0 with                                                            │
00:00:22 #3262 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:22 #3263 [Verbose] > │         let v12 : UH1 = method6(v11, v1)                                     │
00:00:22 #3264 [Verbose] > │         UH1_0(v5, v6, v12)                                                   │
00:00:22 #3265 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:22 #3266 [Verbose] > │         v1                                                                   │
00:00:22 #3267 [Verbose] > │ and method7 (v0 : UH1, v1 : float) : float =                                 │
00:00:22 #3268 [Verbose] > │     match v0 with                                                            │
00:00:22 #3269 [Verbose] > │     | UH1_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:22 #3270 [Verbose] > │         method7(v4, v2)                                                      │
00:00:22 #3271 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:22 #3272 [Verbose] > │         v1                                                                   │
00:00:22 #3273 [Verbose] > │ and method8 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:22 #3274 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:22 #3275 [Verbose] > │     v0                                                                       │
00:00:22 #3276 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:22 #3277 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:22 #3278 [Verbose] > │     let v0 : (float []) = Array.zeroCreate<float> (71)                       │
00:00:22 #3279 [Verbose] > │     let v1 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:22 #3280 [Verbose] > │     while method1(v1) do                                                     │
00:00:22 #3281 [Verbose] > │         let v3 : int32 = v1.l0                                               │
00:00:22 #3282 [Verbose] > │         let v4 : float = float v3                                            │
00:00:22 #3283 [Verbose] > │         let v5 : float = 10.0 + v4                                           │
00:00:22 #3284 [Verbose] > │         v0.[int v3] <- v5                                                    │
00:00:22 #3285 [Verbose] > │         let v6 : int32 = v3 + 1                                              │
00:00:22 #3286 [Verbose] > │         v1.l0 <- v6                                                          │
00:00:22 #3287 [Verbose] > │         ()                                                                   │
00:00:22 #3288 [Verbose] > │     let v7 : int32 = v0.Length                                               │
00:00:22 #3289 [Verbose] > │     let v8 : (float []) = Array.zeroCreate<float> (v7)                       │
00:00:22 #3290 [Verbose] > │     let v9 : Mut0 = {l0 = 0} : Mut0                                          │
00:00:22 #3291 [Verbose] > │     while method2(v7, v9) do                                                 │
00:00:22 #3292 [Verbose] > │         let v11 : int32 = v9.l0                                              │
00:00:22 #3293 [Verbose] > │         let v12 : float = v0.[int v11]                                       │
00:00:22 #3294 [Verbose] > │         let v13 : float = v12 * 3.141592653589793                            │
00:00:22 #3295 [Verbose] > │         let v14 : float = v13 / 180.0                                        │
00:00:22 #3296 [Verbose] > │         let v15 : float = cos v14                                            │
00:00:22 #3297 [Verbose] > │         let v16 : float = 45.0 * v15                                         │
00:00:22 #3298 [Verbose] > │         let v17 : float = sin v14                                            │
00:00:22 #3299 [Verbose] > │         let v18 : float = 45.0 * v17                                         │
00:00:22 #3300 [Verbose] > │         let v19 : UH0 = UH0_1                                                │
00:00:22 #3301 [Verbose] > │         let v20 : int32 = 0                                                  │
00:00:22 #3302 [Verbose] > │         let v21 : UH0 = method3(v16, v18, v19, v20)                          │
00:00:22 #3303 [Verbose] > │         let v22 : UH1 = UH1_1                                                │
00:00:22 #3304 [Verbose] > │         let v23 : UH1 = method6(v21, v22)                                    │
00:00:22 #3305 [Verbose] > │         let v24 : float = 0.0                                                │
00:00:22 #3306 [Verbose] > │         let v25 : float = method7(v23, v24)                                  │
00:00:22 #3307 [Verbose] > │         v8.[int v11] <- v25                                                  │
00:00:22 #3308 [Verbose] > │         let v26 : int32 = v11 + 1                                            │
00:00:22 #3309 [Verbose] > │         v9.l0 <- v26                                                         │
00:00:22 #3310 [Verbose] > │         ()                                                                   │
00:00:22 #3311 [Verbose] > │     let v27 : string = "horizontal range (m)"                                │
00:00:22 #3312 [Verbose] > │     let v28 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:22 #3313 [Verbose] > │ (v27, v0, v8)|]                                                              │
00:00:22 #3314 [Verbose] > │     let v29 : (struct (string * (float []) * (float [])) []) = method8(v28)  │
00:00:22 #3315 [Verbose] > │     let v30 : string = "range for a baseball hit at 45 m/s"                  │
00:00:22 #3316 [Verbose] > │     let v31 : string = "angle above horizontal (degrees)"                    │
00:00:22 #3317 [Verbose] > │     let v32 : string = ""                                                    │
00:00:22 #3318 [Verbose] > │     struct (v30, v31, v32, v29)                                              │
00:00:22 #3319 [Verbose] > │ method0()                                                                    │
00:00:22 #3320 [Verbose] > │                                                                              │
00:00:22 #3321 [Verbose] > │                                                                              │
00:00:22 #3322 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #3323 [Verbose] >
00:00:22 #3324 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 #3325 [Verbose] > // // test
00:00:22 #3326 [Verbose] >
00:00:22 #3327 [Verbose] > inl best_angle (min, max) =
00:00:22 #3328 [Verbose] >     let rec loop theta_deg (best_range, best_theta_deg) =
00:00:22 #3329 [Verbose] >         if theta_deg > max
00:00:22 #3330 [Verbose] >         then best_range, best_theta_deg
00:00:22 #3331 [Verbose] >         else
00:00:22 #3332 [Verbose] >             inl range = baseball_range 0.01 45 theta_deg
00:00:22 #3333 [Verbose] >             loop
00:00:22 #3334 [Verbose] >                 (theta_deg + 1)
00:00:22 #3335 [Verbose] >                 (if range > best_range
00:00:22 #3336 [Verbose] >                     then range, theta_deg
00:00:22 #3337 [Verbose] >                     else best_range, best_theta_deg)
00:00:22 #3338 [Verbose] >     loop min (0f64, min)
00:00:22 #3339 [Verbose] >
00:00:22 #3340 [Verbose] > best_angle (30f64, 60f64)
00:00:22 #3341 [Verbose] > |> _equal (116.77499158246208, 41)
00:00:22 #3342 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1627-2791-2a9bd5d78c97/main.spi
00:00:22 #3343 [Verbose] >
00:00:22 #3344 [Verbose] > ╭─[ 469.61ms - stdout ]────────────────────────────────────────────────────────╮
00:00:22 #3345 [Verbose] > │ type UH0 =                                                                   │
00:00:22 #3346 [Verbose] > │     | UH0_0 of float * float * float * float * float * float * float * float │
00:00:22 #3347 [Verbose] > │ * float * UH0                                                                │
00:00:22 #3348 [Verbose] > │     | UH0_1                                                                  │
00:00:22 #3349 [Verbose] > │ and UH1 =                                                                    │
00:00:22 #3350 [Verbose] > │     | UH1_0 of float * float * UH1                                           │
00:00:22 #3351 [Verbose] > │     | UH1_1                                                                  │
00:00:22 #3352 [Verbose] > │ let rec method3 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, │
00:00:22 #3353 [Verbose] > │ v5 : float, v6 : float, v7 : float, v8 : float, v9 : int32) : struct (float  │
00:00:22 #3354 [Verbose] > │ * float * float * float * float * float * float * float * float) =           │
00:00:22 #3355 [Verbose] > │     let v10 : bool = v9 <= 0                                                 │
00:00:22 #3356 [Verbose] > │     if v10 then                                                              │
00:00:22 #3357 [Verbose] > │         struct (v0, v1, v2, v3, v4, v5, v6, v7, v8)                          │
00:00:22 #3358 [Verbose] > │     else                                                                     │
00:00:22 #3359 [Verbose] > │         let v11 : float = v6 * v6                                            │
00:00:22 #3360 [Verbose] > │         let v12 : float = v7 * v7                                            │
00:00:22 #3361 [Verbose] > │         let v13 : float = v11 + v12                                          │
00:00:22 #3362 [Verbose] > │         let v14 : float = v8 * v8                                            │
00:00:22 #3363 [Verbose] > │         let v15 : float = v13 + v14                                          │
00:00:22 #3364 [Verbose] > │         let v16 : float = sqrt v15                                           │
00:00:22 #3365 [Verbose] > │         let v17 : float = -0.0007902794129829633 * v16                       │
00:00:22 #3366 [Verbose] > │         let v18 : float = v17 * v6                                           │
00:00:22 #3367 [Verbose] > │         let v19 : float = v17 * v7                                           │
00:00:22 #3368 [Verbose] > │         let v20 : float = v17 * v8                                           │
00:00:22 #3369 [Verbose] > │         let v21 : float =  -v1                                               │
00:00:22 #3370 [Verbose] > │         let v22 : float = v21 * 9.80665                                      │
00:00:22 #3371 [Verbose] > │         let v23 : float = v22 * 0.0                                          │
00:00:22 #3372 [Verbose] > │         let v24 : float = v23 + v18                                          │
00:00:22 #3373 [Verbose] > │         let v25 : float = v23 + v19                                          │
00:00:22 #3374 [Verbose] > │         let v26 : float = v22 + v20                                          │
00:00:22 #3375 [Verbose] > │         let v27 : float = v24 / v1                                           │
00:00:22 #3376 [Verbose] > │         let v28 : float = v25 / v1                                           │
00:00:22 #3377 [Verbose] > │         let v29 : float = v26 / v1                                           │
00:00:22 #3378 [Verbose] > │         let v30 : float = 0.01 * v27                                         │
00:00:22 #3379 [Verbose] > │         let v31 : float = 0.01 * v28                                         │
00:00:22 #3380 [Verbose] > │         let v32 : float = 0.01 * v29                                         │
00:00:22 #3381 [Verbose] > │         let v33 : float = v6 + v30                                           │
00:00:22 #3382 [Verbose] > │         let v34 : float = v7 + v31                                           │
00:00:22 #3383 [Verbose] > │         let v35 : float = v8 + v32                                           │
00:00:22 #3384 [Verbose] > │         let v36 : float = v5 + 0.01                                          │
00:00:22 #3385 [Verbose] > │         let v37 : float = 0.01 * v33                                         │
00:00:22 #3386 [Verbose] > │         let v38 : float = 0.01 * v34                                         │
00:00:22 #3387 [Verbose] > │         let v39 : float = 0.01 * v35                                         │
00:00:22 #3388 [Verbose] > │         let v40 : float = v2 + v37                                           │
00:00:22 #3389 [Verbose] > │         let v41 : float = v3 + v38                                           │
00:00:22 #3390 [Verbose] > │         let v42 : float = v4 + v39                                           │
00:00:22 #3391 [Verbose] > │         let v43 : int32 = v9 - 1                                             │
00:00:22 #3392 [Verbose] > │         method3(v0, v1, v40, v41, v42, v36, v33, v34, v35, v43)              │
00:00:22 #3393 [Verbose] > │ and method4 (v0 : UH0, v1 : UH0) : UH0 =                                     │
00:00:22 #3394 [Verbose] > │     match v0 with                                                            │
00:00:22 #3395 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:22 #3396 [Verbose] > │         let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1)       │
00:00:22 #3397 [Verbose] > │         method4(v11, v12)                                                    │
00:00:22 #3398 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:22 #3399 [Verbose] > │         v1                                                                   │
00:00:22 #3400 [Verbose] > │ and method2 (v0 : float, v1 : float, v2 : UH0, v3 : int32) : UH0 =           │
00:00:22 #3401 [Verbose] > │     let v4 : float = 0.0                                                     │
00:00:22 #3402 [Verbose] > │     let v5 : float = 0.145                                                   │
00:00:22 #3403 [Verbose] > │     let v6 : float = 0.0                                                     │
00:00:22 #3404 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:22 #3405 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:22 #3406 [Verbose] > │     let v9 : float = 0.0                                                     │
00:00:22 #3407 [Verbose] > │     let v10 : float = 0.0                                                    │
00:00:22 #3408 [Verbose] > │     let struct (v11 : float, v12 : float, v13 : float, v14 : float, v15 :    │
00:00:22 #3409 [Verbose] > │ float, v16 : float, v17 : float, v18 : float, v19 : float) = method3(v4, v5, │
00:00:22 #3410 [Verbose] > │ v6, v7, v8, v9, v10, v0, v1, v3)                                             │
00:00:22 #3411 [Verbose] > │     let v20 : bool = v15 >= 0.0                                              │
00:00:22 #3412 [Verbose] > │     if v20 then                                                              │
00:00:22 #3413 [Verbose] > │         let v21 : UH0 = UH0_0(v11, v12, v13, v14, v15, v16, v17, v18, v19,   │
00:00:22 #3414 [Verbose] > │ v2)                                                                          │
00:00:22 #3415 [Verbose] > │         let v22 : int32 = v3 + 1                                             │
00:00:22 #3416 [Verbose] > │         method2(v0, v1, v21, v22)                                            │
00:00:22 #3417 [Verbose] > │     else                                                                     │
00:00:22 #3418 [Verbose] > │         let v24 : UH0 = UH0_1                                                │
00:00:22 #3419 [Verbose] > │         method4(v2, v24)                                                     │
00:00:22 #3420 [Verbose] > │ and method5 (v0 : UH0, v1 : UH1) : UH1 =                                     │
00:00:22 #3421 [Verbose] > │     match v0 with                                                            │
00:00:22 #3422 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:22 #3423 [Verbose] > │         let v12 : UH1 = method5(v11, v1)                                     │
00:00:22 #3424 [Verbose] > │         UH1_0(v5, v6, v12)                                                   │
00:00:22 #3425 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:22 #3426 [Verbose] > │         v1                                                                   │
00:00:22 #3427 [Verbose] > │ and method6 (v0 : UH1, v1 : float) : float =                                 │
00:00:22 #3428 [Verbose] > │     match v0 with                                                            │
00:00:22 #3429 [Verbose] > │     | UH1_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:22 #3430 [Verbose] > │         method6(v4, v2)                                                      │
00:00:22 #3431 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:22 #3432 [Verbose] > │         v1                                                                   │
00:00:22 #3433 [Verbose] > │ and method1 (v0 : float, v1 : float, v2 : float) : struct (float * float) =  │
00:00:22 #3434 [Verbose] > │     let v3 : bool = v0 > 60.0                                                │
00:00:22 #3435 [Verbose] > │     if v3 then                                                               │
00:00:22 #3436 [Verbose] > │         struct (v2, v1)                                                      │
00:00:22 #3437 [Verbose] > │     else                                                                     │
00:00:22 #3438 [Verbose] > │         let v4 : float = v0 * 3.141592653589793                              │
00:00:22 #3439 [Verbose] > │         let v5 : float = v4 / 180.0                                          │
00:00:22 #3440 [Verbose] > │         let v6 : float = cos v5                                              │
00:00:22 #3441 [Verbose] > │         let v7 : float = 45.0 * v6                                           │
00:00:22 #3442 [Verbose] > │         let v8 : float = sin v5                                              │
00:00:22 #3443 [Verbose] > │         let v9 : float = 45.0 * v8                                           │
00:00:22 #3444 [Verbose] > │         let v10 : UH0 = UH0_1                                                │
00:00:22 #3445 [Verbose] > │         let v11 : int32 = 0                                                  │
00:00:22 #3446 [Verbose] > │         let v12 : UH0 = method2(v7, v9, v10, v11)                            │
00:00:22 #3447 [Verbose] > │         let v13 : UH1 = UH1_1                                                │
00:00:22 #3448 [Verbose] > │         let v14 : UH1 = method5(v12, v13)                                    │
00:00:22 #3449 [Verbose] > │         let v15 : float = 0.0                                                │
00:00:22 #3450 [Verbose] > │         let v16 : float = method6(v14, v15)                                  │
00:00:22 #3451 [Verbose] > │         let v17 : float = v0 + 1.0                                           │
00:00:22 #3452 [Verbose] > │         let v18 : bool = v16 > v2                                            │
00:00:22 #3453 [Verbose] > │         let struct (v19 : float, v20 : float) =                              │
00:00:22 #3454 [Verbose] > │             if v18 then                                                      │
00:00:22 #3455 [Verbose] > │                 struct (v16, v0)                                             │
00:00:22 #3456 [Verbose] > │             else                                                             │
00:00:22 #3457 [Verbose] > │                 struct (v2, v1)                                              │
00:00:22 #3458 [Verbose] > │         method1(v17, v20, v19)                                               │
00:00:22 #3459 [Verbose] > │ and method0 () : unit =                                                      │
00:00:22 #3460 [Verbose] > │     let v0 : float = 30.0                                                    │
00:00:22 #3461 [Verbose] > │     let v1 : float = 0.0                                                     │
00:00:22 #3462 [Verbose] > │     let v2 : float = 30.0                                                    │
00:00:22 #3463 [Verbose] > │     let struct (v3 : float, v4 : float) = method1(v0, v2, v1)                │
00:00:22 #3464 [Verbose] > │     let v5 : string = $"__expect / actual: %A{struct (v3, v4)} / expected:   │
00:00:22 #3465 [Verbose] > │ %A{struct (116.77499158246208, 41.0)}"                                       │
00:00:22 #3466 [Verbose] > │     let v6 : bool = v3 = 116.77499158246208                                  │
00:00:22 #3467 [Verbose] > │     let v8 : bool =                                                          │
00:00:22 #3468 [Verbose] > │         if v6 then                                                           │
00:00:22 #3469 [Verbose] > │             let v7 : bool = v4 = 41.0                                        │
00:00:22 #3470 [Verbose] > │             v7                                                               │
00:00:22 #3471 [Verbose] > │         else                                                                 │
00:00:22 #3472 [Verbose] > │             false                                                            │
00:00:22 #3473 [Verbose] > │     let v9 : bool = v8 = false                                               │
00:00:22 #3474 [Verbose] > │     if v9 then                                                               │
00:00:22 #3475 [Verbose] > │         failwith<unit> v5                                                    │
00:00:22 #3476 [Verbose] > │ method0()                                                                    │
00:00:22 #3477 [Verbose] > │                                                                              │
00:00:22 #3478 [Verbose] > │                                                                              │
00:00:22 #3479 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #3480 [Verbose] >
00:00:22 #3481 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 #3482 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 #3483 [Verbose] > │ ## relativity_ps                                                             │
00:00:22 #3484 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 #3485 [Verbose] >
00:00:22 #3486 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 #3487 [Verbose] > inl relativity_ps fs (st : particle_state) =
00:00:22 #3488 [Verbose] >     inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:00:22 #3489 [Verbose] >     inl c = 299792458
00:00:22 #3490 [Verbose] >     inl u = st.velocity ^/ c
00:00:22 #3491 [Verbose] >     inl acc = sqrt (1 - (u <.> u)) *^ (f_net ^-^ (f_net <.> u) *^ u) ^/ st.mass
00:00:22 #3492 [Verbose] >     d_particle_state {
00:00:22 #3493 [Verbose] >         dmdt = 0
00:00:22 #3494 [Verbose] >         dqdt = 0
00:00:22 #3495 [Verbose] >         dtdt = 1
00:00:22 #3496 [Verbose] >         drdt = st.velocity
00:00:22 #3497 [Verbose] >         dvdt = acc
00:00:22 #3498 [Verbose] >     }
00:00:22 #3499 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1675-7564-74ef45b173cc/main.spi
00:00:23 #3500 [Verbose] >
00:00:23 #3501 [Verbose] > ╭─[ 176.00ms - stdout ]────────────────────────────────────────────────────────╮
00:00:23 #3502 [Verbose] > │ ()                                                                           │
00:00:23 #3503 [Verbose] > │                                                                              │
00:00:23 #3504 [Verbose] > │                                                                              │
00:00:23 #3505 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 #3506 [Verbose] >
00:00:23 #3507 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 #3508 [Verbose] > // // test
00:00:23 #3509 [Verbose] >
00:00:23 #3510 [Verbose] > inl year = 365.25 * 24 * 60 * 60
00:00:23 #3511 [Verbose] > inl c = 299792458
00:00:23 #3512 [Verbose] > inl ~method = runge_kutta_4 100000
00:00:23 #3513 [Verbose] > inl forces = [[ fun _ => 10 *^ i_hat () ]]
00:00:23 #3514 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:23 #3515 [Verbose] > inl initial_state =
00:00:23 #3516 [Verbose] >     particle_state { default_particle_state' with
00:00:23 #3517 [Verbose] >         mass = 1
00:00:23 #3518 [Verbose] >     }
00:00:23 #3519 [Verbose] >
00:00:23 #3520 [Verbose] > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:00:23 #3521 [Verbose] > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:00:23 #3522 [Verbose] >
00:00:23 #3523 [Verbose] > inl newton_x, newton_y =
00:00:23 #3524 [Verbose] >     newton_states
00:00:23 #3525 [Verbose] >     >> Some
00:00:23 #3526 [Verbose] >     |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:00:23 #3527 [Verbose] >     |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:00:23 #3528 [Verbose] >     |> listm'.unzip
00:00:23 #3529 [Verbose] >
00:00:23 #3530 [Verbose] > inl _, relativity_y =
00:00:23 #3531 [Verbose] >     relativity_states
00:00:23 #3532 [Verbose] >     >> Some
00:00:23 #3533 [Verbose] >     |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:00:23 #3534 [Verbose] >     |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:00:23 #3535 [Verbose] >     |> listm'.unzip
00:00:23 #3536 [Verbose] >
00:00:23 #3537 [Verbose] > inl newton_x : a i32 _ = newton_x |> listm.toArray
00:00:23 #3538 [Verbose] > inl newton_y : a i32 _ = newton_y |> listm.toArray
00:00:23 #3539 [Verbose] > inl relativity_y : a i32 _ = relativity_y |> listm.toArray
00:00:23 #3540 [Verbose] >
00:00:23 #3541 [Verbose] > "response to a constant force",
00:00:23 #3542 [Verbose] > "time (years)",
00:00:23 #3543 [Verbose] > "velocity (multiples of c)",
00:00:23 #3544 [Verbose] > ;[[
00:00:23 #3545 [Verbose] >     "newtonian", newton_x, newton_y
00:00:23 #3546 [Verbose] >     "relativistic", newton_x, relativity_y
00:00:23 #3547 [Verbose] > ]]
00:00:23 #3548 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1693-9313-92de44c6177f/main.spi
00:00:23 #3549 [Verbose] >
00:00:23 #3550 [Verbose] > ╭─[ 424.09ms - return value ]──────────────────────────────────────────────────╮
00:00:23 #3551 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:23 #3552 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:23 #3553 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:23 #3554 [Verbose] > │ stroke="none"/>                                                              │
00:00:23 #3555 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:23 #3556 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:23 #3557 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:23 #3558 [Verbose] > │ response to a constant force                                                 │
00:00:23 #3559 [Verbose] > │ </text>                                                                      │
00:00:23 #3560 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:23 #3561 [Verbose] > │ y2="75"/>                                                                    │
00:00:23 #3562 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:23 #3563 [Verbose] > │ y2="75"/>                                                                    │
00:00:23 #3564 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:23 #3565 [Verbose] > │ y2="75"/>                                                                    │
00:00:23 #3566 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:23 #3567 [Verbose] > │ y2="75"/>                                                                    │
00:00:23 #3568 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1=...                   │
00:00:23 #3569 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 #3570 [Verbose] >
00:00:23 #3571 [Verbose] > ╭─[ 428.10ms - stdout ]────────────────────────────────────────────────────────╮
00:00:23 #3572 [Verbose] > │ type UH0 =                                                                   │
00:00:23 #3573 [Verbose] > │     | UH0_0 of float * float * float * float * float * float * float * float │
00:00:23 #3574 [Verbose] > │ * float * UH0                                                                │
00:00:23 #3575 [Verbose] > │     | UH0_1                                                                  │
00:00:23 #3576 [Verbose] > │ and UH1 =                                                                    │
00:00:23 #3577 [Verbose] > │     | UH1_0 of float * float * UH1                                           │
00:00:23 #3578 [Verbose] > │     | UH1_1                                                                  │
00:00:23 #3579 [Verbose] > │ and UH2 =                                                                    │
00:00:23 #3580 [Verbose] > │     | UH2_0 of float * UH2                                                   │
00:00:23 #3581 [Verbose] > │     | UH2_1                                                                  │
00:00:23 #3582 [Verbose] > │ let rec closure1 (v0 : (struct (float * float * float * float * float *      │
00:00:23 #3583 [Verbose] > │ float * float * float * float) -> struct (float * float * float * float *    │
00:00:23 #3584 [Verbose] > │ float * float * float * float * float))) struct (v1 : float, v2 : float, v3  │
00:00:23 #3585 [Verbose] > │ : float, v4 : float, v5 : float, v6 : float, v7 : float, v8 : float, v9 :    │
00:00:23 #3586 [Verbose] > │ float) : struct (float * float * float * float * float * float * float *     │
00:00:23 #3587 [Verbose] > │ float * float) =                                                             │
00:00:23 #3588 [Verbose] > │     let struct (v10 : float, v11 : float, v12 : float, v13 : float, v14 :    │
00:00:23 #3589 [Verbose] > │ float, v15 : float, v16 : float, v17 : float, v18 : float) = v0 struct (v1,  │
00:00:23 #3590 [Verbose] > │ v2, v3, v4, v5, v6, v7, v8, v9)                                              │
00:00:23 #3591 [Verbose] > │     let v19 : float = v15 * 50000.0                                          │
00:00:23 #3592 [Verbose] > │     let v20 : float = v6 + v19                                               │
00:00:23 #3593 [Verbose] > │     let v21 : float = 50000.0 * v12                                          │
00:00:23 #3594 [Verbose] > │     let v22 : float = 50000.0 * v13                                          │
00:00:23 #3595 [Verbose] > │     let v23 : float = 50000.0 * v14                                          │
00:00:23 #3596 [Verbose] > │     let v24 : float = v3 + v21                                               │
00:00:23 #3597 [Verbose] > │     let v25 : float = v4 + v22                                               │
00:00:23 #3598 [Verbose] > │     let v26 : float = v5 + v23                                               │
00:00:23 #3599 [Verbose] > │     let v27 : float = 50000.0 * v16                                          │
00:00:23 #3600 [Verbose] > │     let v28 : float = 50000.0 * v17                                          │
00:00:23 #3601 [Verbose] > │     let v29 : float = 50000.0 * v18                                          │
00:00:23 #3602 [Verbose] > │     let v30 : float = v7 + v27                                               │
00:00:23 #3603 [Verbose] > │     let v31 : float = v8 + v28                                               │
00:00:23 #3604 [Verbose] > │     let v32 : float = v9 + v29                                               │
00:00:23 #3605 [Verbose] > │     let struct (v33 : float, v34 : float, v35 : float, v36 : float, v37 :    │
00:00:23 #3606 [Verbose] > │ float, v38 : float, v39 : float, v40 : float, v41 : float) = v0 struct (v1,  │
00:00:23 #3607 [Verbose] > │ v2, v24, v25, v26, v20, v30, v31, v32)                                       │
00:00:23 #3608 [Verbose] > │     let v42 : float = v38 * 50000.0                                          │
00:00:23 #3609 [Verbose] > │     let v43 : float = v6 + v42                                               │
00:00:23 #3610 [Verbose] > │     let v44 : float = 50000.0 * v35                                          │
00:00:23 #3611 [Verbose] > │     let v45 : float = 50000.0 * v36                                          │
00:00:23 #3612 [Verbose] > │     let v46 : float = 50000.0 * v37                                          │
00:00:23 #3613 [Verbose] > │     let v47 : float = v3 + v44                                               │
00:00:23 #3614 [Verbose] > │     let v48 : float = v4 + v45                                               │
00:00:23 #3615 [Verbose] > │     let v49 : float = v5 + v46                                               │
00:00:23 #3616 [Verbose] > │     let v50 : float = 50000.0 * v39                                          │
00:00:23 #3617 [Verbose] > │     let v51 : float = 50000.0 * v40                                          │
00:00:23 #3618 [Verbose] > │     let v52 : float = 50000.0 * v41                                          │
00:00:23 #3619 [Verbose] > │     let v53 : float = v7 + v50                                               │
00:00:23 #3620 [Verbose] > │     let v54 : float = v8 + v51                                               │
00:00:23 #3621 [Verbose] > │     let v55 : float = v9 + v52                                               │
00:00:23 #3622 [Verbose] > │     let struct (v56 : float, v57 : float, v58 : float, v59 : float, v60 :    │
00:00:23 #3623 [Verbose] > │ float, v61 : float, v62 : float, v63 : float, v64 : float) = v0 struct (v1,  │
00:00:23 #3624 [Verbose] > │ v2, v47, v48, v49, v43, v53, v54, v55)                                       │
00:00:23 #3625 [Verbose] > │     let v65 : float = v61 * 100000.0                                         │
00:00:23 #3626 [Verbose] > │     let v66 : float = v6 + v65                                               │
00:00:23 #3627 [Verbose] > │     let v67 : float = 100000.0 * v58                                         │
00:00:23 #3628 [Verbose] > │     let v68 : float = 100000.0 * v59                                         │
00:00:23 #3629 [Verbose] > │     let v69 : float = 100000.0 * v60                                         │
00:00:23 #3630 [Verbose] > │     let v70 : float = v3 + v67                                               │
00:00:23 #3631 [Verbose] > │     let v71 : float = v4 + v68                                               │
00:00:23 #3632 [Verbose] > │     let v72 : float = v5 + v69                                               │
00:00:23 #3633 [Verbose] > │     let v73 : float = 100000.0 * v62                                         │
00:00:23 #3634 [Verbose] > │     let v74 : float = 100000.0 * v63                                         │
00:00:23 #3635 [Verbose] > │     let v75 : float = 100000.0 * v64                                         │
00:00:23 #3636 [Verbose] > │     let v76 : float = v7 + v73                                               │
00:00:23 #3637 [Verbose] > │     let v77 : float = v8 + v74                                               │
00:00:23 #3638 [Verbose] > │     let v78 : float = v9 + v75                                               │
00:00:23 #3639 [Verbose] > │     let struct (v79 : float, v80 : float, v81 : float, v82 : float, v83 :    │
00:00:23 #3640 [Verbose] > │ float, v84 : float, v85 : float, v86 : float, v87 : float) = v0 struct (v1,  │
00:00:23 #3641 [Verbose] > │ v2, v70, v71, v72, v66, v76, v77, v78)                                       │
00:00:23 #3642 [Verbose] > │     let v88 : float = v10 + v33                                              │
00:00:23 #3643 [Verbose] > │     let v89 : float = v11 + v34                                              │
00:00:23 #3644 [Verbose] > │     let v90 : float = v15 + v38                                              │
00:00:23 #3645 [Verbose] > │     let v91 : float = v12 + v35                                              │
00:00:23 #3646 [Verbose] > │     let v92 : float = v13 + v36                                              │
00:00:23 #3647 [Verbose] > │     let v93 : float = v14 + v37                                              │
00:00:23 #3648 [Verbose] > │     let v94 : float = v16 + v39                                              │
00:00:23 #3649 [Verbose] > │     let v95 : float = v17 + v40                                              │
00:00:23 #3650 [Verbose] > │     let v96 : float = v18 + v41                                              │
00:00:23 #3651 [Verbose] > │     let v97 : float = v88 + v33                                              │
00:00:23 #3652 [Verbose] > │     let v98 : float = v89 + v34                                              │
00:00:23 #3653 [Verbose] > │     let v99 : float = v90 + v38                                              │
00:00:23 #3654 [Verbose] > │     let v100 : float = v91 + v35                                             │
00:00:23 #3655 [Verbose] > │     let v101 : float = v92 + v36                                             │
00:00:23 #3656 [Verbose] > │     let v102 : float = v93 + v37                                             │
00:00:23 #3657 [Verbose] > │     let v103 : float = v94 + v39                                             │
00:00:23 #3658 [Verbose] > │     let v104 : float = v95 + v40                                             │
00:00:23 #3659 [Verbose] > │     let v105 : float = v96 + v41                                             │
00:00:23 #3660 [Verbose] > │     let v106 : float = v97 + v56                                             │
00:00:23 #3661 [Verbose] > │     let v107 : float = v98 + v57                                             │
00:00:23 #3662 [Verbose] > │     let v108 : float = v99 + v61                                             │
00:00:23 #3663 [Verbose] > │     let v109 : float = v100 + v58                                            │
00:00:23 #3664 [Verbose] > │     let v110 : float = v101 + v59                                            │
00:00:23 #3665 [Verbose] > │     let v111 : float = v102 + v60                                            │
00:00:23 #3666 [Verbose] > │     let v112 : float = v103 + v62                                            │
00:00:23 #3667 [Verbose] > │     let v113 : float = v104 + v63                                            │
00:00:23 #3668 [Verbose] > │     let v114 : float = v105 + v64                                            │
00:00:23 #3669 [Verbose] > │     let v115 : float = v106 + v56                                            │
00:00:23 #3670 [Verbose] > │     let v116 : float = v107 + v57                                            │
00:00:23 #3671 [Verbose] > │     let v117 : float = v108 + v61                                            │
00:00:23 #3672 [Verbose] > │     let v118 : float = v109 + v58                                            │
00:00:23 #3673 [Verbose] > │     let v119 : float = v110 + v59                                            │
00:00:23 #3674 [Verbose] > │     let v120 : float = v111 + v60                                            │
00:00:23 #3675 [Verbose] > │     let v121 : float = v112 + v62                                            │
00:00:23 #3676 [Verbose] > │     let v122 : float = v113 + v63                                            │
00:00:23 #3677 [Verbose] > │     let v123 : float = v114 + v64                                            │
00:00:23 #3678 [Verbose] > │     let v124 : float = v115 + v79                                            │
00:00:23 #3679 [Verbose] > │     let v125 : float = v116 + v80                                            │
00:00:23 #3680 [Verbose] > │     let v126 : float = v117 + v84                                            │
00:00:23 #3681 [Verbose] > │     let v127 : float = v118 + v81                                            │
00:00:23 #3682 [Verbose] > │     let v128 : float = v119 + v82                                            │
00:00:23 #3683 [Verbose] > │     let v129 : float = v120 + v83                                            │
00:00:23 #3684 [Verbose] > │     let v130 : float = v121 + v85                                            │
00:00:23 #3685 [Verbose] > │     let v131 : float = v122 + v86                                            │
00:00:23 #3686 [Verbose] > │     let v132 : float = v123 + v87                                            │
00:00:23 #3687 [Verbose] > │     let v133 : float = v126 * 16666.666666666668                             │
00:00:23 #3688 [Verbose] > │     let v134 : float = v6 + v133                                             │
00:00:23 #3689 [Verbose] > │     let v135 : float = 16666.666666666668 * v127                             │
00:00:23 #3690 [Verbose] > │     let v136 : float = 16666.666666666668 * v128                             │
00:00:23 #3691 [Verbose] > │     let v137 : float = 16666.666666666668 * v129                             │
00:00:23 #3692 [Verbose] > │     let v138 : float = v3 + v135                                             │
00:00:23 #3693 [Verbose] > │     let v139 : float = v4 + v136                                             │
00:00:23 #3694 [Verbose] > │     let v140 : float = v5 + v137                                             │
00:00:23 #3695 [Verbose] > │     let v141 : float = 16666.666666666668 * v130                             │
00:00:23 #3696 [Verbose] > │     let v142 : float = 16666.666666666668 * v131                             │
00:00:23 #3697 [Verbose] > │     let v143 : float = 16666.666666666668 * v132                             │
00:00:23 #3698 [Verbose] > │     let v144 : float = v7 + v141                                             │
00:00:23 #3699 [Verbose] > │     let v145 : float = v8 + v142                                             │
00:00:23 #3700 [Verbose] > │     let v146 : float = v9 + v143                                             │
00:00:23 #3701 [Verbose] > │     struct (v1, v2, v138, v139, v140, v134, v144, v145, v146)                │
00:00:23 #3702 [Verbose] > │ and closure0 () (v0 : (struct (float * float * float * float * float * float │
00:00:23 #3703 [Verbose] > │ * float * float * float) -> struct (float * float * float * float * float *  │
00:00:23 #3704 [Verbose] > │ float * float * float * float))) : (struct (float * float * float * float *  │
00:00:23 #3705 [Verbose] > │ float * float * float * float * float) -> struct (float * float * float *    │
00:00:23 #3706 [Verbose] > │ float * float * float * float * float * float)) =                            │
00:00:23 #3707 [Verbose] > │     closure1(v0)                                                             │
00:00:23 #3708 [Verbose] > │ and closure2 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:23 #3709 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *     │
00:00:23 #3710 [Verbose] > │ float * float * float * float * float * float * float * float) =             │
00:00:23 #3711 [Verbose] > │     let v9 : float = 10.0 / v1                                               │
00:00:23 #3712 [Verbose] > │     let v10 : float = 0.0 / v1                                               │
00:00:23 #3713 [Verbose] > │     struct (0.0, 0.0, v6, v7, v8, 1.0, v9, v10, v10)                         │
00:00:23 #3714 [Verbose] > │ and closure3 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:23 #3715 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *     │
00:00:23 #3716 [Verbose] > │ float * float * float * float * float * float * float * float) =             │
00:00:23 #3717 [Verbose] > │     let v9 : float = v6 / 299792458.0                                        │
00:00:23 #3718 [Verbose] > │     let v10 : float = v7 / 299792458.0                                       │
00:00:23 #3719 [Verbose] > │     let v11 : float = v8 / 299792458.0                                       │
00:00:23 #3720 [Verbose] > │     let v12 : float = v9 * v9                                                │
00:00:23 #3721 [Verbose] > │     let v13 : float = v10 * v10                                              │
00:00:23 #3722 [Verbose] > │     let v14 : float = v12 + v13                                              │
00:00:23 #3723 [Verbose] > │     let v15 : float = v11 * v11                                              │
00:00:23 #3724 [Verbose] > │     let v16 : float = v14 + v15                                              │
00:00:23 #3725 [Verbose] > │     let v17 : float = 1.0 - v16                                              │
00:00:23 #3726 [Verbose] > │     let v18 : float = sqrt v17                                               │
00:00:23 #3727 [Verbose] > │     let v19 : float = 10.0 * v9                                              │
00:00:23 #3728 [Verbose] > │     let v20 : float = 0.0 * v10                                              │
00:00:23 #3729 [Verbose] > │     let v21 : float = v19 + v20                                              │
00:00:23 #3730 [Verbose] > │     let v22 : float = 0.0 * v11                                              │
00:00:23 #3731 [Verbose] > │     let v23 : float = v21 + v22                                              │
00:00:23 #3732 [Verbose] > │     let v24 : float = v23 * v9                                               │
00:00:23 #3733 [Verbose] > │     let v25 : float = v23 * v10                                              │
00:00:23 #3734 [Verbose] > │     let v26 : float = v23 * v11                                              │
00:00:23 #3735 [Verbose] > │     let v27 : float = -1.0 * v24                                             │
00:00:23 #3736 [Verbose] > │     let v28 : float = -1.0 * v25                                             │
00:00:23 #3737 [Verbose] > │     let v29 : float = -1.0 * v26                                             │
00:00:23 #3738 [Verbose] > │     let v30 : float = 10.0 + v27                                             │
00:00:23 #3739 [Verbose] > │     let v31 : float = v18 * v30                                              │
00:00:23 #3740 [Verbose] > │     let v32 : float = v18 * v28                                              │
00:00:23 #3741 [Verbose] > │     let v33 : float = v18 * v29                                              │
00:00:23 #3742 [Verbose] > │     let v34 : float = v31 / v1                                               │
00:00:23 #3743 [Verbose] > │     let v35 : float = v32 / v1                                               │
00:00:23 #3744 [Verbose] > │     let v36 : float = v33 / v1                                               │
00:00:23 #3745 [Verbose] > │     struct (0.0, 0.0, v6, v7, v8, 1.0, v34, v35, v36)                        │
00:00:23 #3746 [Verbose] > │ and method2 (v0 : (struct (float * float * float * float * float * float *   │
00:00:23 #3747 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float *    │
00:00:23 #3748 [Verbose] > │ float * float * float * float)), v1 : float, v2 : float, v3 : float, v4 :    │
00:00:23 #3749 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float, v9 : float, v10 :     │
00:00:23 #3750 [Verbose] > │ int32) : struct (float * float * float * float * float * float * float *     │
00:00:23 #3751 [Verbose] > │ float * float) =                                                             │
00:00:23 #3752 [Verbose] > │     let v11 : bool = v10 <= 0                                                │
00:00:23 #3753 [Verbose] > │     if v11 then                                                              │
00:00:23 #3754 [Verbose] > │         struct (v1, v2, v3, v4, v5, v6, v7, v8, v9)                          │
00:00:23 #3755 [Verbose] > │     else                                                                     │
00:00:23 #3756 [Verbose] > │         let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16  │
00:00:23 #3757 [Verbose] > │ : float, v17 : float, v18 : float, v19 : float, v20 : float) = v0 struct     │
00:00:23 #3758 [Verbose] > │ (v1, v2, v3, v4, v5, v6, v7, v8, v9)                                         │
00:00:23 #3759 [Verbose] > │         let v21 : int32 = v10 - 1                                            │
00:00:23 #3760 [Verbose] > │         method2(v0, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21)        │
00:00:23 #3761 [Verbose] > │ and method3 (v0 : UH0, v1 : UH0) : UH0 =                                     │
00:00:23 #3762 [Verbose] > │     match v0 with                                                            │
00:00:23 #3763 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:23 #3764 [Verbose] > │         let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1)       │
00:00:23 #3765 [Verbose] > │         method3(v11, v12)                                                    │
00:00:23 #3766 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:23 #3767 [Verbose] > │         v1                                                                   │
00:00:23 #3768 [Verbose] > │ and method1 (v0 : (struct (float * float * float * float * float * float *   │
00:00:23 #3769 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float *    │
00:00:23 #3770 [Verbose] > │ float * float * float * float)), v1 : UH0, v2 : int32) : UH0 =               │
00:00:23 #3771 [Verbose] > │     let v3 : float = 0.0                                                     │
00:00:23 #3772 [Verbose] > │     let v4 : float = 1.0                                                     │
00:00:23 #3773 [Verbose] > │     let v5 : float = 0.0                                                     │
00:00:23 #3774 [Verbose] > │     let v6 : float = 0.0                                                     │
00:00:23 #3775 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:23 #3776 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:23 #3777 [Verbose] > │     let v9 : float = 0.0                                                     │
00:00:23 #3778 [Verbose] > │     let v10 : float = 0.0                                                    │
00:00:23 #3779 [Verbose] > │     let v11 : float = 0.0                                                    │
00:00:23 #3780 [Verbose] > │     let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 :    │
00:00:23 #3781 [Verbose] > │ float, v17 : float, v18 : float, v19 : float, v20 : float) = method2(v0, v3, │
00:00:23 #3782 [Verbose] > │ v4, v5, v6, v7, v8, v9, v10, v11, v2)                                        │
00:00:23 #3783 [Verbose] > │     let v21 : bool = v17 <= 31557600.0                                       │
00:00:23 #3784 [Verbose] > │     if v21 then                                                              │
00:00:23 #3785 [Verbose] > │         let v22 : UH0 = UH0_0(v12, v13, v14, v15, v16, v17, v18, v19, v20,   │
00:00:23 #3786 [Verbose] > │ v1)                                                                          │
00:00:23 #3787 [Verbose] > │         let v23 : int32 = v2 + 1                                             │
00:00:23 #3788 [Verbose] > │         method1(v0, v22, v23)                                                │
00:00:23 #3789 [Verbose] > │     else                                                                     │
00:00:23 #3790 [Verbose] > │         let v25 : UH0 = UH0_1                                                │
00:00:23 #3791 [Verbose] > │         method3(v1, v25)                                                     │
00:00:23 #3792 [Verbose] > │ and method4 (v0 : UH0, v1 : UH1) : UH1 =                                     │
00:00:23 #3793 [Verbose] > │     match v0 with                                                            │
00:00:23 #3794 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:23 #3795 [Verbose] > │         let v12 : UH1 = method4(v11, v1)                                     │
00:00:23 #3796 [Verbose] > │         let v13 : float = v7 / 31557600.0                                    │
00:00:23 #3797 [Verbose] > │         let v14 : float = v8 / 299792458.0                                   │
00:00:23 #3798 [Verbose] > │         UH1_0(v13, v14, v12)                                                 │
00:00:23 #3799 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:23 #3800 [Verbose] > │         v1                                                                   │
00:00:23 #3801 [Verbose] > │ and method5 (v0 : UH1, v1 : UH2, v2 : UH2) : struct (UH2 * UH2) =            │
00:00:23 #3802 [Verbose] > │     match v0 with                                                            │
00:00:23 #3803 [Verbose] > │     | UH1_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:23 #3804 [Verbose] > │         let v6 : UH2 = UH2_0(v3, v1)                                         │
00:00:23 #3805 [Verbose] > │         let v7 : UH2 = UH2_0(v4, v2)                                         │
00:00:23 #3806 [Verbose] > │         method5(v5, v6, v7)                                                  │
00:00:23 #3807 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:23 #3808 [Verbose] > │         struct (v1, v2)                                                      │
00:00:23 #3809 [Verbose] > │ and method6 (v0 : UH2, v1 : UH2) : UH2 =                                     │
00:00:23 #3810 [Verbose] > │     match v0 with                                                            │
00:00:23 #3811 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:00:23 #3812 [Verbose] > │         let v4 : UH2 = UH2_0(v2, v1)                                         │
00:00:23 #3813 [Verbose] > │         method6(v3, v4)                                                      │
00:00:23 #3814 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:23 #3815 [Verbose] > │         v1                                                                   │
00:00:23 #3816 [Verbose] > │ and method7 (v0 : (struct (float * float * float * float * float * float *   │
00:00:23 #3817 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float *    │
00:00:23 #3818 [Verbose] > │ float * float * float * float)), v1 : UH0, v2 : int32) : UH0 =               │
00:00:23 #3819 [Verbose] > │     let v3 : float = 0.0                                                     │
00:00:23 #3820 [Verbose] > │     let v4 : float = 1.0                                                     │
00:00:23 #3821 [Verbose] > │     let v5 : float = 0.0                                                     │
00:00:23 #3822 [Verbose] > │     let v6 : float = 0.0                                                     │
00:00:23 #3823 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:23 #3824 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:23 #3825 [Verbose] > │     let v9 : float = 0.0                                                     │
00:00:23 #3826 [Verbose] > │     let v10 : float = 0.0                                                    │
00:00:23 #3827 [Verbose] > │     let v11 : float = 0.0                                                    │
00:00:23 #3828 [Verbose] > │     let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 :    │
00:00:23 #3829 [Verbose] > │ float, v17 : float, v18 : float, v19 : float, v20 : float) = method2(v0, v3, │
00:00:23 #3830 [Verbose] > │ v4, v5, v6, v7, v8, v9, v10, v11, v2)                                        │
00:00:23 #3831 [Verbose] > │     let v21 : bool = v17 <= 31557600.0                                       │
00:00:23 #3832 [Verbose] > │     if v21 then                                                              │
00:00:23 #3833 [Verbose] > │         let v22 : UH0 = UH0_0(v12, v13, v14, v15, v16, v17, v18, v19, v20,   │
00:00:23 #3834 [Verbose] > │ v1)                                                                          │
00:00:23 #3835 [Verbose] > │         let v23 : int32 = v2 + 1                                             │
00:00:23 #3836 [Verbose] > │         method7(v0, v22, v23)                                                │
00:00:23 #3837 [Verbose] > │     else                                                                     │
00:00:23 #3838 [Verbose] > │         let v25 : UH0 = UH0_1                                                │
00:00:23 #3839 [Verbose] > │         method3(v1, v25)                                                     │
00:00:23 #3840 [Verbose] > │ and method8 (v0 : UH0, v1 : UH1) : UH1 =                                     │
00:00:23 #3841 [Verbose] > │     match v0 with                                                            │
00:00:23 #3842 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:23 #3843 [Verbose] > │         let v12 : UH1 = method8(v11, v1)                                     │
00:00:23 #3844 [Verbose] > │         let v13 : float = v7 / 31557600.0                                    │
00:00:23 #3845 [Verbose] > │         let v14 : float = v8 / 299792458.0                                   │
00:00:23 #3846 [Verbose] > │         UH1_0(v13, v14, v12)                                                 │
00:00:23 #3847 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:23 #3848 [Verbose] > │         v1                                                                   │
00:00:23 #3849 [Verbose] > │ and method10 (v0 : UH2, v1 : int32) : int32 =                                │
00:00:23 #3850 [Verbose] > │     match v0 with                                                            │
00:00:23 #3851 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:00:23 #3852 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:23 #3853 [Verbose] > │         method10(v3, v4)                                                     │
00:00:23 #3854 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:23 #3855 [Verbose] > │         v1                                                                   │
00:00:23 #3856 [Verbose] > │ and method11 (v0 : (float []), v1 : UH2, v2 : int32) : int32 =               │
00:00:23 #3857 [Verbose] > │     match v1 with                                                            │
00:00:23 #3858 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:00:23 #3859 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:23 #3860 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:23 #3861 [Verbose] > │         method11(v0, v4, v5)                                                 │
00:00:23 #3862 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:23 #3863 [Verbose] > │         v2                                                                   │
00:00:23 #3864 [Verbose] > │ and method9 (v0 : UH2) : (float []) =                                        │
00:00:23 #3865 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:23 #3866 [Verbose] > │     let v2 : int32 = method10(v0, v1)                                        │
00:00:23 #3867 [Verbose] > │     let v3 : (float []) = Array.zeroCreate<float> (v2)                       │
00:00:23 #3868 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:23 #3869 [Verbose] > │     let v5 : int32 = method11(v3, v0, v4)                                    │
00:00:23 #3870 [Verbose] > │     v3                                                                       │
00:00:23 #3871 [Verbose] > │ and method12 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:23 #3872 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:23 #3873 [Verbose] > │     v0                                                                       │
00:00:23 #3874 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:23 #3875 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:23 #3876 [Verbose] > │     let v0 : ((struct (float * float * float * float * float * float * float │
00:00:23 #3877 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:23 #3878 [Verbose] > │ float * float * float)) -> (struct (float * float * float * float * float *  │
00:00:23 #3879 [Verbose] > │ float * float * float * float) -> struct (float * float * float * float *    │
00:00:23 #3880 [Verbose] > │ float * float * float * float * float))) = closure0()                        │
00:00:23 #3881 [Verbose] > │     let v1 : (struct (float * float * float * float * float * float * float  │
00:00:23 #3882 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:23 #3883 [Verbose] > │ float * float * float)) = closure2()                                         │
00:00:23 #3884 [Verbose] > │     let v2 : (struct (float * float * float * float * float * float * float  │
00:00:23 #3885 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:23 #3886 [Verbose] > │ float * float * float)) = v0 v1                                              │
00:00:23 #3887 [Verbose] > │     let v3 : (struct (float * float * float * float * float * float * float  │
00:00:23 #3888 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:23 #3889 [Verbose] > │ float * float * float)) = closure3()                                         │
00:00:23 #3890 [Verbose] > │     let v4 : (struct (float * float * float * float * float * float * float  │
00:00:23 #3891 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:23 #3892 [Verbose] > │ float * float * float)) = v0 v3                                              │
00:00:23 #3893 [Verbose] > │     let v5 : UH0 = UH0_1                                                     │
00:00:23 #3894 [Verbose] > │     let v6 : int32 = 0                                                       │
00:00:23 #3895 [Verbose] > │     let v7 : UH0 = method1(v2, v5, v6)                                       │
00:00:23 #3896 [Verbose] > │     let v8 : UH1 = UH1_1                                                     │
00:00:23 #3897 [Verbose] > │     let v9 : UH1 = method4(v7, v8)                                           │
00:00:23 #3898 [Verbose] > │     let v10 : UH2 = UH2_1                                                    │
00:00:23 #3899 [Verbose] > │     let v11 : UH2 = UH2_1                                                    │
00:00:23 #3900 [Verbose] > │     let struct (v12 : UH2, v13 : UH2) = method5(v9, v10, v11)                │
00:00:23 #3901 [Verbose] > │     let v14 : UH2 = UH2_1                                                    │
00:00:23 #3902 [Verbose] > │     let v15 : UH2 = method6(v12, v14)                                        │
00:00:23 #3903 [Verbose] > │     let v16 : UH2 = UH2_1                                                    │
00:00:23 #3904 [Verbose] > │     let v17 : UH2 = method6(v13, v16)                                        │
00:00:23 #3905 [Verbose] > │     let v18 : UH0 = UH0_1                                                    │
00:00:23 #3906 [Verbose] > │     let v19 : int32 = 0                                                      │
00:00:23 #3907 [Verbose] > │     let v20 : UH0 = method7(v4, v18, v19)                                    │
00:00:23 #3908 [Verbose] > │     let v21 : UH1 = UH1_1                                                    │
00:00:23 #3909 [Verbose] > │     let v22 : UH1 = method8(v20, v21)                                        │
00:00:23 #3910 [Verbose] > │     let v23 : UH2 = UH2_1                                                    │
00:00:23 #3911 [Verbose] > │     let v24 : UH2 = UH2_1                                                    │
00:00:23 #3912 [Verbose] > │     let struct (v25 : UH2, v26 : UH2) = method5(v22, v23, v24)               │
00:00:23 #3913 [Verbose] > │     let v27 : UH2 = UH2_1                                                    │
00:00:23 #3914 [Verbose] > │     let v28 : UH2 = method6(v25, v27)                                        │
00:00:23 #3915 [Verbose] > │     let v29 : UH2 = UH2_1                                                    │
00:00:23 #3916 [Verbose] > │     let v30 : UH2 = method6(v26, v29)                                        │
00:00:23 #3917 [Verbose] > │     let v31 : (float []) = method9(v15)                                      │
00:00:23 #3918 [Verbose] > │     let v32 : (float []) = method9(v17)                                      │
00:00:23 #3919 [Verbose] > │     let v33 : (float []) = method9(v30)                                      │
00:00:23 #3920 [Verbose] > │     let v34 : string = "newtonian"                                           │
00:00:23 #3921 [Verbose] > │     let v35 : string = "relativistic"                                        │
00:00:23 #3922 [Verbose] > │     let v36 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:23 #3923 [Verbose] > │ (v34, v31, v32); struct (v35, v31, v33)|]                                    │
00:00:23 #3924 [Verbose] > │     let v37 : (struct (string * (float []) * (float [])) []) = method12(v36) │
00:00:23 #3925 [Verbose] > │     let v38 : string = "response to a constant force"                        │
00:00:23 #3926 [Verbose] > │     let v39 : string = "time (years)"                                        │
00:00:23 #3927 [Verbose] > │     let v40 : string = "velocity (multiples of c)"                           │
00:00:23 #3928 [Verbose] > │     struct (v38, v39, v40, v37)                                              │
00:00:23 #3929 [Verbose] > │ method0()                                                                    │
00:00:23 #3930 [Verbose] > │                                                                              │
00:00:23 #3931 [Verbose] > │                                                                              │
00:00:23 #3932 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 #3933 [Verbose] >
00:00:23 #3934 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 #3935 [Verbose] > inl uniform_lorentz_force v_e v_b (st : particle_state) =
00:00:23 #3936 [Verbose] >     st.charge *^ (v_e ^+^ st.velocity >< v_b)
00:00:23 #3937 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1736-3693-3feb70952e70/main.spi
00:00:23 #3938 [Verbose] >
00:00:23 #3939 [Verbose] > ╭─[ 174.37ms - stdout ]────────────────────────────────────────────────────────╮
00:00:23 #3940 [Verbose] > │ ()                                                                           │
00:00:23 #3941 [Verbose] > │                                                                              │
00:00:23 #3942 [Verbose] > │                                                                              │
00:00:23 #3943 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:23 #3944 [Verbose] >
00:00:23 #3945 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:23 #3946 [Verbose] > // // test
00:00:23 #3947 [Verbose] >
00:00:23 #3948 [Verbose] > inl c : f64 = 299792458
00:00:23 #3949 [Verbose] > inl ~method = runge_kutta_4 0.000000001
00:00:23 #3950 [Verbose] > inl forces = [[ uniform_lorentz_force (zero_vec ()) (k_hat ()) ]]
00:00:23 #3951 [Verbose] > inl (particle_state default_particle_state') = default_particle_state ()
00:00:23 #3952 [Verbose] > inl initial_state =
00:00:23 #3953 [Verbose] >     particle_state { default_particle_state' with
00:00:23 #3954 [Verbose] >         mass = 0.000000000000000000000000001672621898
00:00:23 #3955 [Verbose] >         charge = 0.0000000000000000001602176621
00:00:23 #3956 [Verbose] >         velocity = 0.8 *^ (c *^ j_hat ())
00:00:23 #3957 [Verbose] >     }
00:00:23 #3958 [Verbose] >
00:00:23 #3959 [Verbose] > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:00:23 #3960 [Verbose] > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:00:23 #3961 [Verbose] >
00:00:23 #3962 [Verbose] > inl newton_x, newton_y =
00:00:23 #3963 [Verbose] >     newton_states
00:00:23 #3964 [Verbose] >     >> Some
00:00:23 #3965 [Verbose] >     |> seq.take_while_ (fun (particle_state st) i => i < 100i32)
00:00:23 #3966 [Verbose] >     |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:00:23 #3967 [Verbose] >     |> listm'.unzip
00:00:23 #3968 [Verbose] >
00:00:23 #3969 [Verbose] > inl relativity_x, relativity_y =
00:00:23 #3970 [Verbose] >     relativity_states
00:00:23 #3971 [Verbose] >     >> Some
00:00:23 #3972 [Verbose] >     |> seq.take_while_ (fun (particle_state st) i => i < 165i32)
00:00:23 #3973 [Verbose] >     |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:00:23 #3974 [Verbose] >     |> listm'.unzip
00:00:23 #3975 [Verbose] >
00:00:23 #3976 [Verbose] > inl newton_x : a i32 _ = newton_x |> listm.toArray
00:00:23 #3977 [Verbose] > inl newton_y : a i32 _ = newton_y |> listm.toArray
00:00:23 #3978 [Verbose] >
00:00:23 #3979 [Verbose] > inl relativity_x : a i32 _ = relativity_x |> listm.toArray
00:00:23 #3980 [Verbose] > inl relativity_y : a i32 _ = relativity_y |> listm.toArray
00:00:23 #3981 [Verbose] >
00:00:23 #3982 [Verbose] > "proton in a 1-t magnetic field",
00:00:23 #3983 [Verbose] > "x (m)",
00:00:23 #3984 [Verbose] > "y (m)",
00:00:23 #3985 [Verbose] > ;[[
00:00:23 #3986 [Verbose] >     "newtonian", newton_x, newton_y
00:00:23 #3987 [Verbose] >     "relativistic", relativity_x, relativity_y
00:00:23 #3988 [Verbose] > ]]
00:00:23 #3989 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1754-5444-5dcf46d83891/main.spi
00:00:24 #3990 [Verbose] >
00:00:24 #3991 [Verbose] > ╭─[ 363.98ms - return value ]──────────────────────────────────────────────────╮
00:00:24 #3992 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:24 #3993 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:24 #3994 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:24 #3995 [Verbose] > │ stroke="none"/>                                                              │
00:00:24 #3996 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:24 #3997 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:24 #3998 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:24 #3999 [Verbose] > │ proton in a 1-t magnetic field                                               │
00:00:24 #4000 [Verbose] > │ </text>                                                                      │
00:00:24 #4001 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="58" y1="424" x2="58" │
00:00:24 #4002 [Verbose] > │ y2="75"/>                                                                    │
00:00:24 #4003 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:24 #4004 [Verbose] > │ y2="75"/>                                                                    │
00:00:24 #4005 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="81" y1="424" x2="81" │
00:00:24 #4006 [Verbose] > │ y2="75"/>                                                                    │
00:00:24 #4007 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:00:24 #4008 [Verbose] > │ y2="75"/>                                                                    │
00:00:24 #4009 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x...                     │
00:00:24 #4010 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #4011 [Verbose] >
00:00:24 #4012 [Verbose] > ╭─[ 370.21ms - stdout ]────────────────────────────────────────────────────────╮
00:00:24 #4013 [Verbose] > │ type UH0 =                                                                   │
00:00:24 #4014 [Verbose] > │     | UH0_0 of float * float * float * float * float * float * float * float │
00:00:24 #4015 [Verbose] > │ * float * UH0                                                                │
00:00:24 #4016 [Verbose] > │     | UH0_1                                                                  │
00:00:24 #4017 [Verbose] > │ and UH1 =                                                                    │
00:00:24 #4018 [Verbose] > │     | UH1_0 of float * float * UH1                                           │
00:00:24 #4019 [Verbose] > │     | UH1_1                                                                  │
00:00:24 #4020 [Verbose] > │ and UH2 =                                                                    │
00:00:24 #4021 [Verbose] > │     | UH2_0 of float * UH2                                                   │
00:00:24 #4022 [Verbose] > │     | UH2_1                                                                  │
00:00:24 #4023 [Verbose] > │ let rec closure1 (v0 : (struct (float * float * float * float * float *      │
00:00:24 #4024 [Verbose] > │ float * float * float * float) -> struct (float * float * float * float *    │
00:00:24 #4025 [Verbose] > │ float * float * float * float * float))) struct (v1 : float, v2 : float, v3  │
00:00:24 #4026 [Verbose] > │ : float, v4 : float, v5 : float, v6 : float, v7 : float, v8 : float, v9 :    │
00:00:24 #4027 [Verbose] > │ float) : struct (float * float * float * float * float * float * float *     │
00:00:24 #4028 [Verbose] > │ float * float) =                                                             │
00:00:24 #4029 [Verbose] > │     let struct (v10 : float, v11 : float, v12 : float, v13 : float, v14 :    │
00:00:24 #4030 [Verbose] > │ float, v15 : float, v16 : float, v17 : float, v18 : float) = v0 struct (v1,  │
00:00:24 #4031 [Verbose] > │ v2, v3, v4, v5, v6, v7, v8, v9)                                              │
00:00:24 #4032 [Verbose] > │     let v19 : float = v15 * 5E-10                                            │
00:00:24 #4033 [Verbose] > │     let v20 : float = v6 + v19                                               │
00:00:24 #4034 [Verbose] > │     let v21 : float = 5E-10 * v12                                            │
00:00:24 #4035 [Verbose] > │     let v22 : float = 5E-10 * v13                                            │
00:00:24 #4036 [Verbose] > │     let v23 : float = 5E-10 * v14                                            │
00:00:24 #4037 [Verbose] > │     let v24 : float = v3 + v21                                               │
00:00:24 #4038 [Verbose] > │     let v25 : float = v4 + v22                                               │
00:00:24 #4039 [Verbose] > │     let v26 : float = v5 + v23                                               │
00:00:24 #4040 [Verbose] > │     let v27 : float = 5E-10 * v16                                            │
00:00:24 #4041 [Verbose] > │     let v28 : float = 5E-10 * v17                                            │
00:00:24 #4042 [Verbose] > │     let v29 : float = 5E-10 * v18                                            │
00:00:24 #4043 [Verbose] > │     let v30 : float = v7 + v27                                               │
00:00:24 #4044 [Verbose] > │     let v31 : float = v8 + v28                                               │
00:00:24 #4045 [Verbose] > │     let v32 : float = v9 + v29                                               │
00:00:24 #4046 [Verbose] > │     let struct (v33 : float, v34 : float, v35 : float, v36 : float, v37 :    │
00:00:24 #4047 [Verbose] > │ float, v38 : float, v39 : float, v40 : float, v41 : float) = v0 struct (v1,  │
00:00:24 #4048 [Verbose] > │ v2, v24, v25, v26, v20, v30, v31, v32)                                       │
00:00:24 #4049 [Verbose] > │     let v42 : float = v38 * 5E-10                                            │
00:00:24 #4050 [Verbose] > │     let v43 : float = v6 + v42                                               │
00:00:24 #4051 [Verbose] > │     let v44 : float = 5E-10 * v35                                            │
00:00:24 #4052 [Verbose] > │     let v45 : float = 5E-10 * v36                                            │
00:00:24 #4053 [Verbose] > │     let v46 : float = 5E-10 * v37                                            │
00:00:24 #4054 [Verbose] > │     let v47 : float = v3 + v44                                               │
00:00:24 #4055 [Verbose] > │     let v48 : float = v4 + v45                                               │
00:00:24 #4056 [Verbose] > │     let v49 : float = v5 + v46                                               │
00:00:24 #4057 [Verbose] > │     let v50 : float = 5E-10 * v39                                            │
00:00:24 #4058 [Verbose] > │     let v51 : float = 5E-10 * v40                                            │
00:00:24 #4059 [Verbose] > │     let v52 : float = 5E-10 * v41                                            │
00:00:24 #4060 [Verbose] > │     let v53 : float = v7 + v50                                               │
00:00:24 #4061 [Verbose] > │     let v54 : float = v8 + v51                                               │
00:00:24 #4062 [Verbose] > │     let v55 : float = v9 + v52                                               │
00:00:24 #4063 [Verbose] > │     let struct (v56 : float, v57 : float, v58 : float, v59 : float, v60 :    │
00:00:24 #4064 [Verbose] > │ float, v61 : float, v62 : float, v63 : float, v64 : float) = v0 struct (v1,  │
00:00:24 #4065 [Verbose] > │ v2, v47, v48, v49, v43, v53, v54, v55)                                       │
00:00:24 #4066 [Verbose] > │     let v65 : float = v61 * 1E-09                                            │
00:00:24 #4067 [Verbose] > │     let v66 : float = v6 + v65                                               │
00:00:24 #4068 [Verbose] > │     let v67 : float = 1E-09 * v58                                            │
00:00:24 #4069 [Verbose] > │     let v68 : float = 1E-09 * v59                                            │
00:00:24 #4070 [Verbose] > │     let v69 : float = 1E-09 * v60                                            │
00:00:24 #4071 [Verbose] > │     let v70 : float = v3 + v67                                               │
00:00:24 #4072 [Verbose] > │     let v71 : float = v4 + v68                                               │
00:00:24 #4073 [Verbose] > │     let v72 : float = v5 + v69                                               │
00:00:24 #4074 [Verbose] > │     let v73 : float = 1E-09 * v62                                            │
00:00:24 #4075 [Verbose] > │     let v74 : float = 1E-09 * v63                                            │
00:00:24 #4076 [Verbose] > │     let v75 : float = 1E-09 * v64                                            │
00:00:24 #4077 [Verbose] > │     let v76 : float = v7 + v73                                               │
00:00:24 #4078 [Verbose] > │     let v77 : float = v8 + v74                                               │
00:00:24 #4079 [Verbose] > │     let v78 : float = v9 + v75                                               │
00:00:24 #4080 [Verbose] > │     let struct (v79 : float, v80 : float, v81 : float, v82 : float, v83 :    │
00:00:24 #4081 [Verbose] > │ float, v84 : float, v85 : float, v86 : float, v87 : float) = v0 struct (v1,  │
00:00:24 #4082 [Verbose] > │ v2, v70, v71, v72, v66, v76, v77, v78)                                       │
00:00:24 #4083 [Verbose] > │     let v88 : float = v10 + v33                                              │
00:00:24 #4084 [Verbose] > │     let v89 : float = v11 + v34                                              │
00:00:24 #4085 [Verbose] > │     let v90 : float = v15 + v38                                              │
00:00:24 #4086 [Verbose] > │     let v91 : float = v12 + v35                                              │
00:00:24 #4087 [Verbose] > │     let v92 : float = v13 + v36                                              │
00:00:24 #4088 [Verbose] > │     let v93 : float = v14 + v37                                              │
00:00:24 #4089 [Verbose] > │     let v94 : float = v16 + v39                                              │
00:00:24 #4090 [Verbose] > │     let v95 : float = v17 + v40                                              │
00:00:24 #4091 [Verbose] > │     let v96 : float = v18 + v41                                              │
00:00:24 #4092 [Verbose] > │     let v97 : float = v88 + v33                                              │
00:00:24 #4093 [Verbose] > │     let v98 : float = v89 + v34                                              │
00:00:24 #4094 [Verbose] > │     let v99 : float = v90 + v38                                              │
00:00:24 #4095 [Verbose] > │     let v100 : float = v91 + v35                                             │
00:00:24 #4096 [Verbose] > │     let v101 : float = v92 + v36                                             │
00:00:24 #4097 [Verbose] > │     let v102 : float = v93 + v37                                             │
00:00:24 #4098 [Verbose] > │     let v103 : float = v94 + v39                                             │
00:00:24 #4099 [Verbose] > │     let v104 : float = v95 + v40                                             │
00:00:24 #4100 [Verbose] > │     let v105 : float = v96 + v41                                             │
00:00:24 #4101 [Verbose] > │     let v106 : float = v97 + v56                                             │
00:00:24 #4102 [Verbose] > │     let v107 : float = v98 + v57                                             │
00:00:24 #4103 [Verbose] > │     let v108 : float = v99 + v61                                             │
00:00:24 #4104 [Verbose] > │     let v109 : float = v100 + v58                                            │
00:00:24 #4105 [Verbose] > │     let v110 : float = v101 + v59                                            │
00:00:24 #4106 [Verbose] > │     let v111 : float = v102 + v60                                            │
00:00:24 #4107 [Verbose] > │     let v112 : float = v103 + v62                                            │
00:00:24 #4108 [Verbose] > │     let v113 : float = v104 + v63                                            │
00:00:24 #4109 [Verbose] > │     let v114 : float = v105 + v64                                            │
00:00:24 #4110 [Verbose] > │     let v115 : float = v106 + v56                                            │
00:00:24 #4111 [Verbose] > │     let v116 : float = v107 + v57                                            │
00:00:24 #4112 [Verbose] > │     let v117 : float = v108 + v61                                            │
00:00:24 #4113 [Verbose] > │     let v118 : float = v109 + v58                                            │
00:00:24 #4114 [Verbose] > │     let v119 : float = v110 + v59                                            │
00:00:24 #4115 [Verbose] > │     let v120 : float = v111 + v60                                            │
00:00:24 #4116 [Verbose] > │     let v121 : float = v112 + v62                                            │
00:00:24 #4117 [Verbose] > │     let v122 : float = v113 + v63                                            │
00:00:24 #4118 [Verbose] > │     let v123 : float = v114 + v64                                            │
00:00:24 #4119 [Verbose] > │     let v124 : float = v115 + v79                                            │
00:00:24 #4120 [Verbose] > │     let v125 : float = v116 + v80                                            │
00:00:24 #4121 [Verbose] > │     let v126 : float = v117 + v84                                            │
00:00:24 #4122 [Verbose] > │     let v127 : float = v118 + v81                                            │
00:00:24 #4123 [Verbose] > │     let v128 : float = v119 + v82                                            │
00:00:24 #4124 [Verbose] > │     let v129 : float = v120 + v83                                            │
00:00:24 #4125 [Verbose] > │     let v130 : float = v121 + v85                                            │
00:00:24 #4126 [Verbose] > │     let v131 : float = v122 + v86                                            │
00:00:24 #4127 [Verbose] > │     let v132 : float = v123 + v87                                            │
00:00:24 #4128 [Verbose] > │     let v133 : float = v126 * 1.6666666666666669E-10                         │
00:00:24 #4129 [Verbose] > │     let v134 : float = v6 + v133                                             │
00:00:24 #4130 [Verbose] > │     let v135 : float = 1.6666666666666669E-10 * v127                         │
00:00:24 #4131 [Verbose] > │     let v136 : float = 1.6666666666666669E-10 * v128                         │
00:00:24 #4132 [Verbose] > │     let v137 : float = 1.6666666666666669E-10 * v129                         │
00:00:24 #4133 [Verbose] > │     let v138 : float = v3 + v135                                             │
00:00:24 #4134 [Verbose] > │     let v139 : float = v4 + v136                                             │
00:00:24 #4135 [Verbose] > │     let v140 : float = v5 + v137                                             │
00:00:24 #4136 [Verbose] > │     let v141 : float = 1.6666666666666669E-10 * v130                         │
00:00:24 #4137 [Verbose] > │     let v142 : float = 1.6666666666666669E-10 * v131                         │
00:00:24 #4138 [Verbose] > │     let v143 : float = 1.6666666666666669E-10 * v132                         │
00:00:24 #4139 [Verbose] > │     let v144 : float = v7 + v141                                             │
00:00:24 #4140 [Verbose] > │     let v145 : float = v8 + v142                                             │
00:00:24 #4141 [Verbose] > │     let v146 : float = v9 + v143                                             │
00:00:24 #4142 [Verbose] > │     struct (v1, v2, v138, v139, v140, v134, v144, v145, v146)                │
00:00:24 #4143 [Verbose] > │ and closure0 () (v0 : (struct (float * float * float * float * float * float │
00:00:24 #4144 [Verbose] > │ * float * float * float) -> struct (float * float * float * float * float *  │
00:00:24 #4145 [Verbose] > │ float * float * float * float))) : (struct (float * float * float * float *  │
00:00:24 #4146 [Verbose] > │ float * float * float * float * float) -> struct (float * float * float *    │
00:00:24 #4147 [Verbose] > │ float * float * float * float * float * float)) =                            │
00:00:24 #4148 [Verbose] > │     closure1(v0)                                                             │
00:00:24 #4149 [Verbose] > │ and closure2 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:24 #4150 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *     │
00:00:24 #4151 [Verbose] > │ float * float * float * float * float * float * float * float) =             │
00:00:24 #4152 [Verbose] > │     let v9 : float = v8 * 0.0                                                │
00:00:24 #4153 [Verbose] > │     let v10 : float = v7 - v9                                                │
00:00:24 #4154 [Verbose] > │     let v11 : float = v9 - v6                                                │
00:00:24 #4155 [Verbose] > │     let v12 : float = v6 * 0.0                                               │
00:00:24 #4156 [Verbose] > │     let v13 : float = v7 * 0.0                                               │
00:00:24 #4157 [Verbose] > │     let v14 : float = v12 - v13                                              │
00:00:24 #4158 [Verbose] > │     let v15 : float = v0 * v10                                               │
00:00:24 #4159 [Verbose] > │     let v16 : float = v0 * v11                                               │
00:00:24 #4160 [Verbose] > │     let v17 : float = v0 * v14                                               │
00:00:24 #4161 [Verbose] > │     let v18 : float = v15 / v1                                               │
00:00:24 #4162 [Verbose] > │     let v19 : float = v16 / v1                                               │
00:00:24 #4163 [Verbose] > │     let v20 : float = v17 / v1                                               │
00:00:24 #4164 [Verbose] > │     struct (0.0, 0.0, v6, v7, v8, 1.0, v18, v19, v20)                        │
00:00:24 #4165 [Verbose] > │ and closure3 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:24 #4166 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *     │
00:00:24 #4167 [Verbose] > │ float * float * float * float * float * float * float * float) =             │
00:00:24 #4168 [Verbose] > │     let v9 : float = v8 * 0.0                                                │
00:00:24 #4169 [Verbose] > │     let v10 : float = v7 - v9                                                │
00:00:24 #4170 [Verbose] > │     let v11 : float = v9 - v6                                                │
00:00:24 #4171 [Verbose] > │     let v12 : float = v6 * 0.0                                               │
00:00:24 #4172 [Verbose] > │     let v13 : float = v7 * 0.0                                               │
00:00:24 #4173 [Verbose] > │     let v14 : float = v12 - v13                                              │
00:00:24 #4174 [Verbose] > │     let v15 : float = v0 * v10                                               │
00:00:24 #4175 [Verbose] > │     let v16 : float = v0 * v11                                               │
00:00:24 #4176 [Verbose] > │     let v17 : float = v0 * v14                                               │
00:00:24 #4177 [Verbose] > │     let v18 : float = v6 / 299792458.0                                       │
00:00:24 #4178 [Verbose] > │     let v19 : float = v7 / 299792458.0                                       │
00:00:24 #4179 [Verbose] > │     let v20 : float = v8 / 299792458.0                                       │
00:00:24 #4180 [Verbose] > │     let v21 : float = v18 * v18                                              │
00:00:24 #4181 [Verbose] > │     let v22 : float = v19 * v19                                              │
00:00:24 #4182 [Verbose] > │     let v23 : float = v21 + v22                                              │
00:00:24 #4183 [Verbose] > │     let v24 : float = v20 * v20                                              │
00:00:24 #4184 [Verbose] > │     let v25 : float = v23 + v24                                              │
00:00:24 #4185 [Verbose] > │     let v26 : float = 1.0 - v25                                              │
00:00:24 #4186 [Verbose] > │     let v27 : float = sqrt v26                                               │
00:00:24 #4187 [Verbose] > │     let v28 : float = v15 * v18                                              │
00:00:24 #4188 [Verbose] > │     let v29 : float = v16 * v19                                              │
00:00:24 #4189 [Verbose] > │     let v30 : float = v28 + v29                                              │
00:00:24 #4190 [Verbose] > │     let v31 : float = v17 * v20                                              │
00:00:24 #4191 [Verbose] > │     let v32 : float = v30 + v31                                              │
00:00:24 #4192 [Verbose] > │     let v33 : float = v32 * v18                                              │
00:00:24 #4193 [Verbose] > │     let v34 : float = v32 * v19                                              │
00:00:24 #4194 [Verbose] > │     let v35 : float = v32 * v20                                              │
00:00:24 #4195 [Verbose] > │     let v36 : float = -1.0 * v33                                             │
00:00:24 #4196 [Verbose] > │     let v37 : float = -1.0 * v34                                             │
00:00:24 #4197 [Verbose] > │     let v38 : float = -1.0 * v35                                             │
00:00:24 #4198 [Verbose] > │     let v39 : float = v15 + v36                                              │
00:00:24 #4199 [Verbose] > │     let v40 : float = v16 + v37                                              │
00:00:24 #4200 [Verbose] > │     let v41 : float = v17 + v38                                              │
00:00:24 #4201 [Verbose] > │     let v42 : float = v27 * v39                                              │
00:00:24 #4202 [Verbose] > │     let v43 : float = v27 * v40                                              │
00:00:24 #4203 [Verbose] > │     let v44 : float = v27 * v41                                              │
00:00:24 #4204 [Verbose] > │     let v45 : float = v42 / v1                                               │
00:00:24 #4205 [Verbose] > │     let v46 : float = v43 / v1                                               │
00:00:24 #4206 [Verbose] > │     let v47 : float = v44 / v1                                               │
00:00:24 #4207 [Verbose] > │     struct (0.0, 0.0, v6, v7, v8, 1.0, v45, v46, v47)                        │
00:00:24 #4208 [Verbose] > │ and method2 (v0 : (struct (float * float * float * float * float * float *   │
00:00:24 #4209 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float *    │
00:00:24 #4210 [Verbose] > │ float * float * float * float)), v1 : float, v2 : float, v3 : float, v4 :    │
00:00:24 #4211 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float, v9 : float, v10 :     │
00:00:24 #4212 [Verbose] > │ int32) : struct (float * float * float * float * float * float * float *     │
00:00:24 #4213 [Verbose] > │ float * float) =                                                             │
00:00:24 #4214 [Verbose] > │     let v11 : bool = v10 <= 0                                                │
00:00:24 #4215 [Verbose] > │     if v11 then                                                              │
00:00:24 #4216 [Verbose] > │         struct (v1, v2, v3, v4, v5, v6, v7, v8, v9)                          │
00:00:24 #4217 [Verbose] > │     else                                                                     │
00:00:24 #4218 [Verbose] > │         let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16  │
00:00:24 #4219 [Verbose] > │ : float, v17 : float, v18 : float, v19 : float, v20 : float) = v0 struct     │
00:00:24 #4220 [Verbose] > │ (v1, v2, v3, v4, v5, v6, v7, v8, v9)                                         │
00:00:24 #4221 [Verbose] > │         let v21 : int32 = v10 - 1                                            │
00:00:24 #4222 [Verbose] > │         method2(v0, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21)        │
00:00:24 #4223 [Verbose] > │ and method3 (v0 : UH0, v1 : UH0) : UH0 =                                     │
00:00:24 #4224 [Verbose] > │     match v0 with                                                            │
00:00:24 #4225 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:24 #4226 [Verbose] > │         let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1)       │
00:00:24 #4227 [Verbose] > │         method3(v11, v12)                                                    │
00:00:24 #4228 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:24 #4229 [Verbose] > │         v1                                                                   │
00:00:24 #4230 [Verbose] > │ and method1 (v0 : (struct (float * float * float * float * float * float *   │
00:00:24 #4231 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float *    │
00:00:24 #4232 [Verbose] > │ float * float * float * float)), v1 : UH0, v2 : int32) : UH0 =               │
00:00:24 #4233 [Verbose] > │     let v3 : float = 1.602176621E-19                                         │
00:00:24 #4234 [Verbose] > │     let v4 : float = 1.672621898E-27                                         │
00:00:24 #4235 [Verbose] > │     let v5 : float = 0.0                                                     │
00:00:24 #4236 [Verbose] > │     let v6 : float = 0.0                                                     │
00:00:24 #4237 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:24 #4238 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:24 #4239 [Verbose] > │     let v9 : float = 0.0                                                     │
00:00:24 #4240 [Verbose] > │     let v10 : float = 239833966.4                                            │
00:00:24 #4241 [Verbose] > │     let v11 : float = 0.0                                                    │
00:00:24 #4242 [Verbose] > │     let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 :    │
00:00:24 #4243 [Verbose] > │ float, v17 : float, v18 : float, v19 : float, v20 : float) = method2(v0, v3, │
00:00:24 #4244 [Verbose] > │ v4, v5, v6, v7, v8, v9, v10, v11, v2)                                        │
00:00:24 #4245 [Verbose] > │     let v21 : bool = v2 < 100                                                │
00:00:24 #4246 [Verbose] > │     if v21 then                                                              │
00:00:24 #4247 [Verbose] > │         let v22 : UH0 = UH0_0(v12, v13, v14, v15, v16, v17, v18, v19, v20,   │
00:00:24 #4248 [Verbose] > │ v1)                                                                          │
00:00:24 #4249 [Verbose] > │         let v23 : int32 = v2 + 1                                             │
00:00:24 #4250 [Verbose] > │         method1(v0, v22, v23)                                                │
00:00:24 #4251 [Verbose] > │     else                                                                     │
00:00:24 #4252 [Verbose] > │         let v25 : UH0 = UH0_1                                                │
00:00:24 #4253 [Verbose] > │         method3(v1, v25)                                                     │
00:00:24 #4254 [Verbose] > │ and method4 (v0 : UH0, v1 : UH1) : UH1 =                                     │
00:00:24 #4255 [Verbose] > │     match v0 with                                                            │
00:00:24 #4256 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:24 #4257 [Verbose] > │         let v12 : UH1 = method4(v11, v1)                                     │
00:00:24 #4258 [Verbose] > │         UH1_0(v4, v5, v12)                                                   │
00:00:24 #4259 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:24 #4260 [Verbose] > │         v1                                                                   │
00:00:24 #4261 [Verbose] > │ and method5 (v0 : UH1, v1 : UH2, v2 : UH2) : struct (UH2 * UH2) =            │
00:00:24 #4262 [Verbose] > │     match v0 with                                                            │
00:00:24 #4263 [Verbose] > │     | UH1_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:24 #4264 [Verbose] > │         let v6 : UH2 = UH2_0(v3, v1)                                         │
00:00:24 #4265 [Verbose] > │         let v7 : UH2 = UH2_0(v4, v2)                                         │
00:00:24 #4266 [Verbose] > │         method5(v5, v6, v7)                                                  │
00:00:24 #4267 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:24 #4268 [Verbose] > │         struct (v1, v2)                                                      │
00:00:24 #4269 [Verbose] > │ and method6 (v0 : UH2, v1 : UH2) : UH2 =                                     │
00:00:24 #4270 [Verbose] > │     match v0 with                                                            │
00:00:24 #4271 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:00:24 #4272 [Verbose] > │         let v4 : UH2 = UH2_0(v2, v1)                                         │
00:00:24 #4273 [Verbose] > │         method6(v3, v4)                                                      │
00:00:24 #4274 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:24 #4275 [Verbose] > │         v1                                                                   │
00:00:24 #4276 [Verbose] > │ and method7 (v0 : (struct (float * float * float * float * float * float *   │
00:00:24 #4277 [Verbose] > │ float * float * float) -> struct (float * float * float * float * float *    │
00:00:24 #4278 [Verbose] > │ float * float * float * float)), v1 : UH0, v2 : int32) : UH0 =               │
00:00:24 #4279 [Verbose] > │     let v3 : float = 1.602176621E-19                                         │
00:00:24 #4280 [Verbose] > │     let v4 : float = 1.672621898E-27                                         │
00:00:24 #4281 [Verbose] > │     let v5 : float = 0.0                                                     │
00:00:24 #4282 [Verbose] > │     let v6 : float = 0.0                                                     │
00:00:24 #4283 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:24 #4284 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:24 #4285 [Verbose] > │     let v9 : float = 0.0                                                     │
00:00:24 #4286 [Verbose] > │     let v10 : float = 239833966.4                                            │
00:00:24 #4287 [Verbose] > │     let v11 : float = 0.0                                                    │
00:00:24 #4288 [Verbose] > │     let struct (v12 : float, v13 : float, v14 : float, v15 : float, v16 :    │
00:00:24 #4289 [Verbose] > │ float, v17 : float, v18 : float, v19 : float, v20 : float) = method2(v0, v3, │
00:00:24 #4290 [Verbose] > │ v4, v5, v6, v7, v8, v9, v10, v11, v2)                                        │
00:00:24 #4291 [Verbose] > │     let v21 : bool = v2 < 165                                                │
00:00:24 #4292 [Verbose] > │     if v21 then                                                              │
00:00:24 #4293 [Verbose] > │         let v22 : UH0 = UH0_0(v12, v13, v14, v15, v16, v17, v18, v19, v20,   │
00:00:24 #4294 [Verbose] > │ v1)                                                                          │
00:00:24 #4295 [Verbose] > │         let v23 : int32 = v2 + 1                                             │
00:00:24 #4296 [Verbose] > │         method7(v0, v22, v23)                                                │
00:00:24 #4297 [Verbose] > │     else                                                                     │
00:00:24 #4298 [Verbose] > │         let v25 : UH0 = UH0_1                                                │
00:00:24 #4299 [Verbose] > │         method3(v1, v25)                                                     │
00:00:24 #4300 [Verbose] > │ and method8 (v0 : UH0, v1 : UH1) : UH1 =                                     │
00:00:24 #4301 [Verbose] > │     match v0 with                                                            │
00:00:24 #4302 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:24 #4303 [Verbose] > │         let v12 : UH1 = method8(v11, v1)                                     │
00:00:24 #4304 [Verbose] > │         UH1_0(v4, v5, v12)                                                   │
00:00:24 #4305 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:24 #4306 [Verbose] > │         v1                                                                   │
00:00:24 #4307 [Verbose] > │ and method10 (v0 : UH2, v1 : int32) : int32 =                                │
00:00:24 #4308 [Verbose] > │     match v0 with                                                            │
00:00:24 #4309 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:00:24 #4310 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:24 #4311 [Verbose] > │         method10(v3, v4)                                                     │
00:00:24 #4312 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:24 #4313 [Verbose] > │         v1                                                                   │
00:00:24 #4314 [Verbose] > │ and method11 (v0 : (float []), v1 : UH2, v2 : int32) : int32 =               │
00:00:24 #4315 [Verbose] > │     match v1 with                                                            │
00:00:24 #4316 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:00:24 #4317 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:24 #4318 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:24 #4319 [Verbose] > │         method11(v0, v4, v5)                                                 │
00:00:24 #4320 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:24 #4321 [Verbose] > │         v2                                                                   │
00:00:24 #4322 [Verbose] > │ and method9 (v0 : UH2) : (float []) =                                        │
00:00:24 #4323 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:24 #4324 [Verbose] > │     let v2 : int32 = method10(v0, v1)                                        │
00:00:24 #4325 [Verbose] > │     let v3 : (float []) = Array.zeroCreate<float> (v2)                       │
00:00:24 #4326 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:24 #4327 [Verbose] > │     let v5 : int32 = method11(v3, v0, v4)                                    │
00:00:24 #4328 [Verbose] > │     v3                                                                       │
00:00:24 #4329 [Verbose] > │ and method12 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:24 #4330 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:24 #4331 [Verbose] > │     v0                                                                       │
00:00:24 #4332 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:24 #4333 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:24 #4334 [Verbose] > │     let v0 : ((struct (float * float * float * float * float * float * float │
00:00:24 #4335 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:24 #4336 [Verbose] > │ float * float * float)) -> (struct (float * float * float * float * float *  │
00:00:24 #4337 [Verbose] > │ float * float * float * float) -> struct (float * float * float * float *    │
00:00:24 #4338 [Verbose] > │ float * float * float * float * float))) = closure0()                        │
00:00:24 #4339 [Verbose] > │     let v1 : (struct (float * float * float * float * float * float * float  │
00:00:24 #4340 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:24 #4341 [Verbose] > │ float * float * float)) = closure2()                                         │
00:00:24 #4342 [Verbose] > │     let v2 : (struct (float * float * float * float * float * float * float  │
00:00:24 #4343 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:24 #4344 [Verbose] > │ float * float * float)) = v0 v1                                              │
00:00:24 #4345 [Verbose] > │     let v3 : (struct (float * float * float * float * float * float * float  │
00:00:24 #4346 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:24 #4347 [Verbose] > │ float * float * float)) = closure3()                                         │
00:00:24 #4348 [Verbose] > │     let v4 : (struct (float * float * float * float * float * float * float  │
00:00:24 #4349 [Verbose] > │ * float * float) -> struct (float * float * float * float * float * float *  │
00:00:24 #4350 [Verbose] > │ float * float * float)) = v0 v3                                              │
00:00:24 #4351 [Verbose] > │     let v5 : UH0 = UH0_1                                                     │
00:00:24 #4352 [Verbose] > │     let v6 : int32 = 0                                                       │
00:00:24 #4353 [Verbose] > │     let v7 : UH0 = method1(v2, v5, v6)                                       │
00:00:24 #4354 [Verbose] > │     let v8 : UH1 = UH1_1                                                     │
00:00:24 #4355 [Verbose] > │     let v9 : UH1 = method4(v7, v8)                                           │
00:00:24 #4356 [Verbose] > │     let v10 : UH2 = UH2_1                                                    │
00:00:24 #4357 [Verbose] > │     let v11 : UH2 = UH2_1                                                    │
00:00:24 #4358 [Verbose] > │     let struct (v12 : UH2, v13 : UH2) = method5(v9, v10, v11)                │
00:00:24 #4359 [Verbose] > │     let v14 : UH2 = UH2_1                                                    │
00:00:24 #4360 [Verbose] > │     let v15 : UH2 = method6(v12, v14)                                        │
00:00:24 #4361 [Verbose] > │     let v16 : UH2 = UH2_1                                                    │
00:00:24 #4362 [Verbose] > │     let v17 : UH2 = method6(v13, v16)                                        │
00:00:24 #4363 [Verbose] > │     let v18 : UH0 = UH0_1                                                    │
00:00:24 #4364 [Verbose] > │     let v19 : int32 = 0                                                      │
00:00:24 #4365 [Verbose] > │     let v20 : UH0 = method7(v4, v18, v19)                                    │
00:00:24 #4366 [Verbose] > │     let v21 : UH1 = UH1_1                                                    │
00:00:24 #4367 [Verbose] > │     let v22 : UH1 = method8(v20, v21)                                        │
00:00:24 #4368 [Verbose] > │     let v23 : UH2 = UH2_1                                                    │
00:00:24 #4369 [Verbose] > │     let v24 : UH2 = UH2_1                                                    │
00:00:24 #4370 [Verbose] > │     let struct (v25 : UH2, v26 : UH2) = method5(v22, v23, v24)               │
00:00:24 #4371 [Verbose] > │     let v27 : UH2 = UH2_1                                                    │
00:00:24 #4372 [Verbose] > │     let v28 : UH2 = method6(v25, v27)                                        │
00:00:24 #4373 [Verbose] > │     let v29 : UH2 = UH2_1                                                    │
00:00:24 #4374 [Verbose] > │     let v30 : UH2 = method6(v26, v29)                                        │
00:00:24 #4375 [Verbose] > │     let v31 : (float []) = method9(v15)                                      │
00:00:24 #4376 [Verbose] > │     let v32 : (float []) = method9(v17)                                      │
00:00:24 #4377 [Verbose] > │     let v33 : (float []) = method9(v28)                                      │
00:00:24 #4378 [Verbose] > │     let v34 : (float []) = method9(v30)                                      │
00:00:24 #4379 [Verbose] > │     let v35 : string = "newtonian"                                           │
00:00:24 #4380 [Verbose] > │     let v36 : string = "relativistic"                                        │
00:00:24 #4381 [Verbose] > │     let v37 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:24 #4382 [Verbose] > │ (v35, v31, v32); struct (v36, v33, v34)|]                                    │
00:00:24 #4383 [Verbose] > │     let v38 : (struct (string * (float []) * (float [])) []) = method12(v37) │
00:00:24 #4384 [Verbose] > │     let v39 : string = "proton in a 1-t magnetic field"                      │
00:00:24 #4385 [Verbose] > │     let v40 : string = "x (m)"                                               │
00:00:24 #4386 [Verbose] > │     let v41 : string = "y (m)"                                               │
00:00:24 #4387 [Verbose] > │     struct (v39, v40, v41, v38)                                              │
00:00:24 #4388 [Verbose] > │ method0()                                                                    │
00:00:24 #4389 [Verbose] > │                                                                              │
00:00:24 #4390 [Verbose] > │                                                                              │
00:00:24 #4391 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #4392 [Verbose] >
00:00:24 #4393 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:24 #4394 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:24 #4395 [Verbose] > │ ### system kinetic energy versus time 1                                      │
00:00:24 #4396 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:24 #4397 [Verbose] >
00:00:24 #4398 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:24 #4399 [Verbose] > // // test
00:00:24 #4400 [Verbose] >
00:00:24 #4401 [Verbose] > inl central_force f (particle_state st1) (particle_state st2) =
00:00:24 #4402 [Verbose] >     inl r1 = st1.pos_vec
00:00:24 #4403 [Verbose] >     inl r2 = st2.pos_vec
00:00:24 #4404 [Verbose] >     inl r21 = r2 ^-^ r1
00:00:24 #4405 [Verbose] >     inl r21mag = magnitude r21
00:00:24 #4406 [Verbose] >     f r21mag *^ r21 ^/ r21mag
00:00:24 #4407 [Verbose] >
00:00:24 #4408 [Verbose] > inl billiard_force k re =
00:00:24 #4409 [Verbose] >     inl f r =
00:00:24 #4410 [Verbose] >         if r >= re
00:00:24 #4411 [Verbose] >         then 0
00:00:24 #4412 [Verbose] >         else -k * (r - re)
00:00:24 #4413 [Verbose] >     central_force f
00:00:24 #4414 [Verbose] >
00:00:24 #4415 [Verbose] > type force_vector = vec
00:00:24 #4416 [Verbose] > type two_body_force = particle_state -> particle_state -> force_vector
00:00:24 #4417 [Verbose] >
00:00:24 #4418 [Verbose] > union force =
00:00:24 #4419 [Verbose] >     | ExternalForce : i32 * one_body_force
00:00:24 #4420 [Verbose] >     | InternalForce : i32 * i32 * two_body_force
00:00:24 #4421 [Verbose] >
00:00:24 #4422 [Verbose] > nominal multi_particle_state = list particle_state
00:00:24 #4423 [Verbose] >
00:00:24 #4424 [Verbose] > nominal d_multi_particle_state = list d_particle_state
00:00:24 #4425 [Verbose] >
00:00:24 #4426 [Verbose] > inl force_on n sts force =
00:00:24 #4427 [Verbose] >     match force with
00:00:24 #4428 [Verbose] >     | ExternalForce (n0, f_one_body) =>
00:00:24 #4429 [Verbose] >         if n = n0
00:00:24 #4430 [Verbose] >         then f_one_body
00:00:24 #4431 [Verbose] >         else fun _ => zero_vec ()
00:00:24 #4432 [Verbose] >     | InternalForce (n0, n1, f_two_body) =>
00:00:24 #4433 [Verbose] >         if n = n0
00:00:24 #4434 [Verbose] >         then f_two_body (sts |> listm'.item n1)
00:00:24 #4435 [Verbose] >         elif n = n1
00:00:24 #4436 [Verbose] >         then f_two_body (sts |> listm'.item n0)
00:00:24 #4437 [Verbose] >         else fun _ => zero_vec ()
00:00:24 #4438 [Verbose] >
00:00:24 #4439 [Verbose] > inl forces_on n (multi_particle_state sts) fs =
00:00:24 #4440 [Verbose] >     fs |> listm.map (force_on n sts)
00:00:24 #4441 [Verbose] >
00:00:24 #4442 [Verbose] > inl newton_second_mps fs (multi_particle_state sts) : d_multi_particle_state =
00:00:24 #4443 [Verbose] >     inl deriv (n, st) =
00:00:24 #4444 [Verbose] >         newton_second_ps (forces_on n (multi_particle_state sts) fs) st
00:00:24 #4445 [Verbose] >     sts |> listm'.indexed |> listm.map deriv |> d_multi_particle_state
00:00:24 #4446 [Verbose] >
00:00:24 #4447 [Verbose] > instance (+++) d_multi_particle_state = fun (d_multi_particle_state dsts1)
00:00:24 #4448 [Verbose] > (d_multi_particle_state dsts2) =>
00:00:24 #4449 [Verbose] >     d_multi_particle_state (listm'.zip_with_ (+++) dsts1 dsts2)
00:00:24 #4450 [Verbose] >
00:00:24 #4451 [Verbose] > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:00:24 #4452 [Verbose] >     d_multi_particle_state (dsts |> listm.map (scale w))
00:00:24 #4453 [Verbose] >
00:00:24 #4454 [Verbose] > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:00:24 #4455 [Verbose] >     inl (d_multi_particle_state dsts) =
00:00:24 #4456 [Verbose] >         real
00:00:24 #4457 [Verbose] >             match dsts with
00:00:24 #4458 [Verbose] >             | d_multi_particle_state _ => dsts
00:00:24 #4459 [Verbose] >     listm'.zip_with_ (shift dt) dsts sts |> multi_particle_state
00:00:24 #4460 [Verbose] >
00:00:24 #4461 [Verbose] > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:00:24 #4462 [Verbose] > d_multi_particle_state =
00:00:24 #4463 [Verbose] >     fun deriv mpst0 =>
00:00:24 #4464 [Verbose] >         inl mpst1 = euler dt deriv mpst0
00:00:24 #4465 [Verbose] >         inl (multi_particle_state sts0) = mpst0
00:00:24 #4466 [Verbose] >         inl (multi_particle_state sts1) = mpst1
00:00:24 #4467 [Verbose] >         sts1
00:00:24 #4468 [Verbose] >         |> listm'.zip_ sts0
00:00:24 #4469 [Verbose] >         |> listm.map (fun ((particle_state st0), (particle_state st1)) =>
00:00:24 #4470 [Verbose] >             particle_state {
00:00:24 #4471 [Verbose] >                 st1 with
00:00:24 #4472 [Verbose] >                     pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:00:24 #4473 [Verbose] >             }
00:00:24 #4474 [Verbose] >         )
00:00:24 #4475 [Verbose] >         |> multi_particle_state
00:00:24 #4476 [Verbose] >
00:00:24 #4477 [Verbose] > inl update_mps (method : numerical_method multi_particle_state
00:00:24 #4478 [Verbose] > d_multi_particle_state) =
00:00:24 #4479 [Verbose] >     newton_second_mps >> method
00:00:24 #4480 [Verbose] >
00:00:24 #4481 [Verbose] > inl states_mps (method : numerical_method multi_particle_state
00:00:24 #4482 [Verbose] > d_multi_particle_state) =
00:00:24 #4483 [Verbose] >     newton_second_mps >> method >> seq.iterate_
00:00:24 #4484 [Verbose] >
00:00:24 #4485 [Verbose] >
00:00:24 #4486 [Verbose] > inl kinetic_energy (particle_state st) =
00:00:24 #4487 [Verbose] >     inl m = st.mass
00:00:24 #4488 [Verbose] >     inl v = magnitude st.velocity
00:00:24 #4489 [Verbose] >     0.5 * m * v ** 2
00:00:24 #4490 [Verbose] >
00:00:24 #4491 [Verbose] > inl system_ke (multi_particle_state sts) =
00:00:24 #4492 [Verbose] >     sts |> listm.map kinetic_energy |> listm'.sum
00:00:24 #4493 [Verbose] >
00:00:24 #4494 [Verbose] > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:00:24 #4495 [Verbose] >     inl r1 = st1.pos_vec
00:00:24 #4496 [Verbose] >     inl r2 = st2.pos_vec
00:00:24 #4497 [Verbose] >     inl r21 = r2 ^-^ r1
00:00:24 #4498 [Verbose] >     inl r21mag = magnitude r21
00:00:24 #4499 [Verbose] >     k * (r21mag - re) ** 2 / 2
00:00:24 #4500 [Verbose] >
00:00:24 #4501 [Verbose] > inl earth_surface_gravity_pe (particle_state st) =
00:00:24 #4502 [Verbose] >     inl g = 9.80665
00:00:24 #4503 [Verbose] >     inl m = st.mass
00:00:24 #4504 [Verbose] >     inl z = st.pos_vec.z
00:00:24 #4505 [Verbose] >     m * g * z
00:00:24 #4506 [Verbose] >
00:00:24 #4507 [Verbose] > inl two_springs_pe (multi_particle_state sts) =
00:00:24 #4508 [Verbose] >     inl st0 = sts |> listm'.item 0i32
00:00:24 #4509 [Verbose] >     inl st1 = sts |> listm'.item 1i32
00:00:24 #4510 [Verbose] >     linear_spring_pe 100 0.5 (default_particle_state ()) st0
00:00:24 #4511 [Verbose] >     + linear_spring_pe 100 0.5 st0 st1
00:00:24 #4512 [Verbose] >     + earth_surface_gravity_pe st0
00:00:24 #4513 [Verbose] >     + earth_surface_gravity_pe st1
00:00:24 #4514 [Verbose] >
00:00:24 #4515 [Verbose] > inl two_springs_me mpst =
00:00:24 #4516 [Verbose] >     system_ke mpst + two_springs_pe mpst
00:00:24 #4517 [Verbose] >
00:00:24 #4518 [Verbose] > inl ball_radius () = 0.03
00:00:24 #4519 [Verbose] >
00:00:24 #4520 [Verbose] > inl billiard_forces k =
00:00:24 #4521 [Verbose] >     [[ InternalForce (0, 1, billiard_force k (2 * ball_radius ())) ]]
00:00:24 #4522 [Verbose] >
00:00:24 #4523 [Verbose] > inl billiard_update n_method k dt =
00:00:24 #4524 [Verbose] >     update_mps (n_method dt) (billiard_forces k)
00:00:24 #4525 [Verbose] >
00:00:24 #4526 [Verbose] > inl billiard_initial () =
00:00:24 #4527 [Verbose] >     inl ball_mass = 0.160
00:00:24 #4528 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:24 #4529 [Verbose] >     multi_particle_state [[
00:00:24 #4530 [Verbose] >         particle_state {
00:00:24 #4531 [Verbose] >             default_particle_state' with
00:00:24 #4532 [Verbose] >                 mass = ball_mass
00:00:24 #4533 [Verbose] >                 pos_vec = zero_vec ()
00:00:24 #4534 [Verbose] >                 velocity = 0.2 *^ i_hat ()
00:00:24 #4535 [Verbose] >         }
00:00:24 #4536 [Verbose] >         particle_state {
00:00:24 #4537 [Verbose] >             default_particle_state' with
00:00:24 #4538 [Verbose] >                 mass = ball_mass
00:00:24 #4539 [Verbose] >                 pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:00:24 #4540 [Verbose] >                 velocity = zero_vec ()
00:00:24 #4541 [Verbose] >         }
00:00:24 #4542 [Verbose] >     ]]
00:00:24 #4543 [Verbose] >
00:00:24 #4544 [Verbose] > inl billiard_states ~n_method k dt =
00:00:24 #4545 [Verbose] >     states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:00:24 #4546 [Verbose] >
00:00:24 #4547 [Verbose] > inl billiard_states_finite n_method k dt =
00:00:24 #4548 [Verbose] >     billiard_states n_method k dt
00:00:24 #4549 [Verbose] >     >> Some
00:00:24 #4550 [Verbose] >     |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:00:24 #4551 [Verbose] >         (mpst |> listm'.item 0i32).time <= 10
00:00:24 #4552 [Verbose] >     )
00:00:24 #4553 [Verbose] >
00:00:24 #4554 [Verbose] > inl momentum (particle_state st) =
00:00:24 #4555 [Verbose] >     inl m = st.mass
00:00:24 #4556 [Verbose] >     inl v = st.velocity
00:00:24 #4557 [Verbose] >     m *^ v
00:00:24 #4558 [Verbose] >
00:00:24 #4559 [Verbose] > inl system_p (multi_particle_state sts) =
00:00:24 #4560 [Verbose] >     sts |> listm.map momentum |> sum_vec
00:00:24 #4561 [Verbose] >
00:00:24 #4562 [Verbose] >
00:00:24 #4563 [Verbose] > inl time_ke_ec_x, time_ke_ec_y =
00:00:24 #4564 [Verbose] >     billiard_states_finite euler_cromer_mps 30 0.03
00:00:24 #4565 [Verbose] >     |> listm.map (fun (multi_particle_state mpst) =>
00:00:24 #4566 [Verbose] >         (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:00:24 #4567 [Verbose] >     )
00:00:24 #4568 [Verbose] >     |> listm'.unzip
00:00:24 #4569 [Verbose] >
00:00:24 #4570 [Verbose] > inl time_ke_rk4_x, time_ke_rk4_y =
00:00:24 #4571 [Verbose] >     billiard_states_finite runge_kutta_4 30 0.03
00:00:24 #4572 [Verbose] >     |> listm.map (fun (multi_particle_state mpst) =>
00:00:24 #4573 [Verbose] >         (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:00:24 #4574 [Verbose] >     )
00:00:24 #4575 [Verbose] >     |> listm'.unzip
00:00:24 #4576 [Verbose] >
00:00:24 #4577 [Verbose] > inl time_ke_ec_x : a i32 _ = time_ke_ec_x |> listm.toArray
00:00:24 #4578 [Verbose] > inl time_ke_ec_y : a i32 _ = time_ke_ec_y |> listm.toArray
00:00:24 #4579 [Verbose] >
00:00:24 #4580 [Verbose] > inl time_ke_rk4_x : a i32 _ = time_ke_rk4_x |> listm.toArray
00:00:24 #4581 [Verbose] > inl time_ke_rk4_y : a i32 _ = time_ke_rk4_y |> listm.toArray
00:00:24 #4582 [Verbose] >
00:00:24 #4583 [Verbose] > "system kinetic energy versus time",
00:00:24 #4584 [Verbose] > "time (s)",
00:00:24 #4585 [Verbose] > "system kinetic energy (j)",
00:00:24 #4586 [Verbose] > ;[[
00:00:24 #4587 [Verbose] >     "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:00:24 #4588 [Verbose] >     "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:00:24 #4589 [Verbose] > ]]
00:00:24 #4590 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1792-9235-970980a8e38d/main.spi
00:00:25 #4591 [Verbose] >
00:00:25 #4592 [Verbose] > ╭─[ 1.15s - return value ]─────────────────────────────────────────────────────╮
00:00:25 #4593 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:25 #4594 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:25 #4595 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:25 #4596 [Verbose] > │ stroke="none"/>                                                              │
00:00:25 #4597 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:25 #4598 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:25 #4599 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:25 #4600 [Verbose] > │ system kinetic energy versus time                                            │
00:00:25 #4601 [Verbose] > │ </text>                                                                      │
00:00:25 #4602 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:25 #4603 [Verbose] > │ y2="75"/>                                                                    │
00:00:25 #4604 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:25 #4605 [Verbose] > │ y2="75"/>                                                                    │
00:00:25 #4606 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:25 #4607 [Verbose] > │ y2="75"/>                                                                    │
00:00:25 #4608 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:25 #4609 [Verbose] > │ y2="75"/>                                                                    │
00:00:25 #4610 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1...                        │
00:00:25 #4611 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #4612 [Verbose] >
00:00:25 #4613 [Verbose] > ╭─[ 1.16s - stdout ]───────────────────────────────────────────────────────────╮
00:00:25 #4614 [Verbose] > │ type UH0 =                                                                   │
00:00:25 #4615 [Verbose] > │     | UH0_0 of float * float * float * float * float * float * float * float │
00:00:25 #4616 [Verbose] > │ * float * UH0                                                                │
00:00:25 #4617 [Verbose] > │     | UH0_1                                                                  │
00:00:25 #4618 [Verbose] > │ and UH1 =                                                                    │
00:00:25 #4619 [Verbose] > │     | UH1_0 of float * float * float * float * float * float * float * float │
00:00:25 #4620 [Verbose] > │ * float * UH1                                                                │
00:00:25 #4621 [Verbose] > │     | UH1_1                                                                  │
00:00:25 #4622 [Verbose] > │ and UH2 =                                                                    │
00:00:25 #4623 [Verbose] > │     | UH2_0 of float * float * float * float * float * float * float * float │
00:00:25 #4624 [Verbose] > │ * float * float * float * float * float * float * float * float * float *    │
00:00:25 #4625 [Verbose] > │ float * UH2                                                                  │
00:00:25 #4626 [Verbose] > │     | UH2_1                                                                  │
00:00:25 #4627 [Verbose] > │ and UH3 =                                                                    │
00:00:25 #4628 [Verbose] > │     | UH3_0 of int32 * float * float * float * float * float * float * float │
00:00:25 #4629 [Verbose] > │ * float * float * UH3                                                        │
00:00:25 #4630 [Verbose] > │     | UH3_1                                                                  │
00:00:25 #4631 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:25 #4632 [Verbose] > │     | US0_0                                                                  │
00:00:25 #4633 [Verbose] > │     | US0_1 of f1_0 : float * f1_1 : float * f1_2 : float * f1_3 : float *   │
00:00:25 #4634 [Verbose] > │ f1_4 : float * f1_5 : float * f1_6 : float * f1_7 : float * f1_8 : float     │
00:00:25 #4635 [Verbose] > │ and UH4 =                                                                    │
00:00:25 #4636 [Verbose] > │     | UH4_0 of UH0 * UH4                                                     │
00:00:25 #4637 [Verbose] > │     | UH4_1                                                                  │
00:00:25 #4638 [Verbose] > │ and UH5 =                                                                    │
00:00:25 #4639 [Verbose] > │     | UH5_0 of float * float * UH5                                           │
00:00:25 #4640 [Verbose] > │     | UH5_1                                                                  │
00:00:25 #4641 [Verbose] > │ and UH6 =                                                                    │
00:00:25 #4642 [Verbose] > │     | UH6_0 of float * UH6                                                   │
00:00:25 #4643 [Verbose] > │     | UH6_1                                                                  │
00:00:25 #4644 [Verbose] > │ let rec method2 (v0 : UH0, v1 : UH0) : UH0 =                                 │
00:00:25 #4645 [Verbose] > │     match v0 with                                                            │
00:00:25 #4646 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:25 #4647 [Verbose] > │         let v12 : UH0 = UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1)       │
00:00:25 #4648 [Verbose] > │         method2(v11, v12)                                                    │
00:00:25 #4649 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:25 #4650 [Verbose] > │         v1                                                                   │
00:00:25 #4651 [Verbose] > │ and method1 (v0 : float, v1 : UH0, v2 : UH1, v3 : UH0) : UH0 =               │
00:00:25 #4652 [Verbose] > │     match v2 with                                                            │
00:00:25 #4653 [Verbose] > │     | UH1_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* Cons *)        │
00:00:25 #4654 [Verbose] > │         match v3 with                                                        │
00:00:25 #4655 [Verbose] > │         | UH0_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (* Cons │
00:00:25 #4656 [Verbose] > │ *)                                                                           │
00:00:25 #4657 [Verbose] > │             let v24 : float = v9 * v0                                        │
00:00:25 #4658 [Verbose] > │             let v25 : float = v19 + v24                                      │
00:00:25 #4659 [Verbose] > │             let v26 : float = v0 * v6                                        │
00:00:25 #4660 [Verbose] > │             let v27 : float = v0 * v7                                        │
00:00:25 #4661 [Verbose] > │             let v28 : float = v0 * v8                                        │
00:00:25 #4662 [Verbose] > │             let v29 : float = v16 + v26                                      │
00:00:25 #4663 [Verbose] > │             let v30 : float = v17 + v27                                      │
00:00:25 #4664 [Verbose] > │             let v31 : float = v18 + v28                                      │
00:00:25 #4665 [Verbose] > │             let v32 : float = v0 * v10                                       │
00:00:25 #4666 [Verbose] > │             let v33 : float = v0 * v11                                       │
00:00:25 #4667 [Verbose] > │             let v34 : float = v0 * v12                                       │
00:00:25 #4668 [Verbose] > │             let v35 : float = v20 + v32                                      │
00:00:25 #4669 [Verbose] > │             let v36 : float = v21 + v33                                      │
00:00:25 #4670 [Verbose] > │             let v37 : float = v22 + v34                                      │
00:00:25 #4671 [Verbose] > │             let v38 : UH0 = UH0_0(v14, v15, v29, v30, v31, v25, v35, v36,    │
00:00:25 #4672 [Verbose] > │ v37, v1)                                                                     │
00:00:25 #4673 [Verbose] > │             method1(v0, v38, v13, v23)                                       │
00:00:25 #4674 [Verbose] > │         | _ ->                                                               │
00:00:25 #4675 [Verbose] > │             let v40 : UH0 = UH0_1                                            │
00:00:25 #4676 [Verbose] > │             method2(v1, v40)                                                 │
00:00:25 #4677 [Verbose] > │     | _ ->                                                                   │
00:00:25 #4678 [Verbose] > │         let v43 : UH0 = UH0_1                                                │
00:00:25 #4679 [Verbose] > │         method2(v1, v43)                                                     │
00:00:25 #4680 [Verbose] > │ and method4 (v0 : UH2, v1 : UH2) : UH2 =                                     │
00:00:25 #4681 [Verbose] > │     match v0 with                                                            │
00:00:25 #4682 [Verbose] > │     | UH2_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,    │
00:00:25 #4683 [Verbose] > │ v16, v17, v18, v19, v20) -> (* Cons *)                                       │
00:00:25 #4684 [Verbose] > │         let v21 : UH2 = UH2_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, │
00:00:25 #4685 [Verbose] > │ v13, v14, v15, v16, v17, v18, v19, v1)                                       │
00:00:25 #4686 [Verbose] > │         method4(v20, v21)                                                    │
00:00:25 #4687 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:25 #4688 [Verbose] > │         v1                                                                   │
00:00:25 #4689 [Verbose] > │ and method3 (v0 : UH2, v1 : UH0, v2 : UH0) : UH2 =                           │
00:00:25 #4690 [Verbose] > │     match v1 with                                                            │
00:00:25 #4691 [Verbose] > │     | UH0_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* Cons *)         │
00:00:25 #4692 [Verbose] > │         match v2 with                                                        │
00:00:25 #4693 [Verbose] > │         | UH0_0(v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) -> (* Cons │
00:00:25 #4694 [Verbose] > │ *)                                                                           │
00:00:25 #4695 [Verbose] > │             let v23 : UH2 = UH2_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v13, │
00:00:25 #4696 [Verbose] > │ v14, v15, v16, v17, v18, v19, v20, v21, v0)                                  │
00:00:25 #4697 [Verbose] > │             method3(v23, v12, v22)                                           │
00:00:25 #4698 [Verbose] > │         | _ ->                                                               │
00:00:25 #4699 [Verbose] > │             let v25 : UH2 = UH2_1                                            │
00:00:25 #4700 [Verbose] > │             method4(v0, v25)                                                 │
00:00:25 #4701 [Verbose] > │     | _ ->                                                                   │
00:00:25 #4702 [Verbose] > │         let v28 : UH2 = UH2_1                                                │
00:00:25 #4703 [Verbose] > │         method4(v0, v28)                                                     │
00:00:25 #4704 [Verbose] > │ and method5 (v0 : float, v1 : UH2, v2 : UH0) : UH0 =                         │
00:00:25 #4705 [Verbose] > │     match v1 with                                                            │
00:00:25 #4706 [Verbose] > │     | UH2_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16,   │
00:00:25 #4707 [Verbose] > │ v17, v18, v19, v20, v21) -> (* Cons *)                                       │
00:00:25 #4708 [Verbose] > │         let v22 : UH0 = method5(v0, v21, v2)                                 │
00:00:25 #4709 [Verbose] > │         let v23 : float = v0 * v18                                           │
00:00:25 #4710 [Verbose] > │         let v24 : float = v0 * v19                                           │
00:00:25 #4711 [Verbose] > │         let v25 : float = v0 * v20                                           │
00:00:25 #4712 [Verbose] > │         let v26 : float = v5 + v23                                           │
00:00:25 #4713 [Verbose] > │         let v27 : float = v6 + v24                                           │
00:00:25 #4714 [Verbose] > │         let v28 : float = v7 + v25                                           │
00:00:25 #4715 [Verbose] > │         UH0_0(v12, v13, v26, v27, v28, v17, v18, v19, v20, v22)              │
00:00:25 #4716 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:00:25 #4717 [Verbose] > │         v2                                                                   │
00:00:25 #4718 [Verbose] > │ and closure2 (v0 : float, v1 : (UH0 -> UH1)) (v2 : UH0) : UH0 =              │
00:00:25 #4719 [Verbose] > │     let v3 : UH1 = v1 v2                                                     │
00:00:25 #4720 [Verbose] > │     let v4 : UH0 = UH0_1                                                     │
00:00:25 #4721 [Verbose] > │     let v5 : UH0 = method1(v0, v4, v3, v2)                                   │
00:00:25 #4722 [Verbose] > │     let v6 : UH2 = UH2_1                                                     │
00:00:25 #4723 [Verbose] > │     let v7 : UH2 = method3(v6, v2, v5)                                       │
00:00:25 #4724 [Verbose] > │     let v8 : UH0 = UH0_1                                                     │
00:00:25 #4725 [Verbose] > │     let v9 : UH0 = method5(v0, v7, v8)                                       │
00:00:25 #4726 [Verbose] > │     v9                                                                       │
00:00:25 #4727 [Verbose] > │ and closure1 (v0 : float) (v1 : (UH0 -> UH1)) : (UH0 -> UH0) =               │
00:00:25 #4728 [Verbose] > │     closure2(v0, v1)                                                         │
00:00:25 #4729 [Verbose] > │ and closure0 () (v0 : float) : ((UH0 -> UH1) -> (UH0 -> UH0)) =              │
00:00:25 #4730 [Verbose] > │     closure1(v0)                                                             │
00:00:25 #4731 [Verbose] > │ and method6 (v0 : UH0, v1 : UH3, v2 : int32) : struct (UH3 * int32) =        │
00:00:25 #4732 [Verbose] > │     match v0 with                                                            │
00:00:25 #4733 [Verbose] > │     | UH0_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* Cons *)         │
00:00:25 #4734 [Verbose] > │         let v13 : int32 = v2 + 1                                             │
00:00:25 #4735 [Verbose] > │         let v14 : UH3 = UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v1)  │
00:00:25 #4736 [Verbose] > │         method6(v12, v14, v13)                                               │
00:00:25 #4737 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:25 #4738 [Verbose] > │         struct (v1, v2)                                                      │
00:00:25 #4739 [Verbose] > │ and method7 (v0 : UH3, v1 : UH3) : UH3 =                                     │
00:00:25 #4740 [Verbose] > │     match v0 with                                                            │
00:00:25 #4741 [Verbose] > │     | UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* Cons *)     │
00:00:25 #4742 [Verbose] > │         let v13 : UH3 = UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v1)  │
00:00:25 #4743 [Verbose] > │         method7(v12, v13)                                                    │
00:00:25 #4744 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:00:25 #4745 [Verbose] > │         v1                                                                   │
00:00:25 #4746 [Verbose] > │ and closure4 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, v5 │
00:00:25 #4747 [Verbose] > │ : float, v6 : float, v7 : float, v8 : float) struct (v9 : float, v10 :       │
00:00:25 #4748 [Verbose] > │ float, v11 : float, v12 : float, v13 : float, v14 : float, v15 : float, v16  │
00:00:25 #4749 [Verbose] > │ : float, v17 : float) : struct (float * float * float) =                     │
00:00:25 #4750 [Verbose] > │     let v18 : float = -1.0 * v2                                              │
00:00:25 #4751 [Verbose] > │     let v19 : float = -1.0 * v3                                              │
00:00:25 #4752 [Verbose] > │     let v20 : float = -1.0 * v4                                              │
00:00:25 #4753 [Verbose] > │     let v21 : float = v11 + v18                                              │
00:00:25 #4754 [Verbose] > │     let v22 : float = v12 + v19                                              │
00:00:25 #4755 [Verbose] > │     let v23 : float = v13 + v20                                              │
00:00:25 #4756 [Verbose] > │     let v24 : float = v21 * v21                                              │
00:00:25 #4757 [Verbose] > │     let v25 : float = v22 * v22                                              │
00:00:25 #4758 [Verbose] > │     let v26 : float = v24 + v25                                              │
00:00:25 #4759 [Verbose] > │     let v27 : float = v23 * v23                                              │
00:00:25 #4760 [Verbose] > │     let v28 : float = v26 + v27                                              │
00:00:25 #4761 [Verbose] > │     let v29 : float = sqrt v28                                               │
00:00:25 #4762 [Verbose] > │     let v30 : bool = v29 >= 0.06                                             │
00:00:25 #4763 [Verbose] > │     let v33 : float =                                                        │
00:00:25 #4764 [Verbose] > │         if v30 then                                                          │
00:00:25 #4765 [Verbose] > │             0.0                                                              │
00:00:25 #4766 [Verbose] > │         else                                                                 │
00:00:25 #4767 [Verbose] > │             let v31 : float = v29 - 0.06                                     │
00:00:25 #4768 [Verbose] > │             let v32 : float = -30.0 * v31                                    │
00:00:25 #4769 [Verbose] > │             v32                                                              │
00:00:25 #4770 [Verbose] > │     let v34 : float = v33 * v21                                              │
00:00:25 #4771 [Verbose] > │     let v35 : float = v33 * v22                                              │
00:00:25 #4772 [Verbose] > │     let v36 : float = v33 * v23                                              │
00:00:25 #4773 [Verbose] > │     let v37 : float = v34 / v29                                              │
00:00:25 #4774 [Verbose] > │     let v38 : float = v35 / v29                                              │
00:00:25 #4775 [Verbose] > │     let v39 : float = v36 / v29                                              │
00:00:25 #4776 [Verbose] > │     struct (v37, v38, v39)                                                   │
00:00:25 #4777 [Verbose] > │ and closure5 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 : │
00:00:25 #4778 [Verbose] > │ float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *     │
00:00:25 #4779 [Verbose] > │ float * float) =                                                             │
00:00:25 #4780 [Verbose] > │     struct (0.0, 0.0, 0.0)                                                   │
00:00:25 #4781 [Verbose] > │ and method8 (v0 : UH0, v1 : UH3, v2 : UH1) : UH1 =                           │
00:00:25 #4782 [Verbose] > │     match v1 with                                                            │
00:00:25 #4783 [Verbose] > │     | UH3_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* Cons *)    │
00:00:25 #4784 [Verbose] > │         let v14 : UH1 = method8(v0, v13, v2)                                 │
00:00:25 #4785 [Verbose] > │         let v15 : bool = v3 = 0                                              │
00:00:25 #4786 [Verbose] > │         let v134 : (struct (float * float * float * float * float * float *  │
00:00:25 #4787 [Verbose] > │ float * float * float) -> struct (float * float * float)) =                  │
00:00:25 #4788 [Verbose] > │             if v15 then                                                      │
00:00:25 #4789 [Verbose] > │                 let v42 : US0 =                                              │
00:00:25 #4790 [Verbose] > │                     match v0 with                                            │
00:00:25 #4791 [Verbose] > │                     | UH0_0(v16, v17, v18, v19, v20, v21, v22, v23, v24,     │
00:00:25 #4792 [Verbose] > │ v25) -> (* Cons *)                                                           │
00:00:25 #4793 [Verbose] > │                         match v25 with                                       │
00:00:25 #4794 [Verbose] > │                         | UH0_0(v26, v27, v28, v29, v30, v31, v32, v33, v34, │
00:00:25 #4795 [Verbose] > │ v35) -> (* Cons *)                                                           │
00:00:25 #4796 [Verbose] > │                             US0_1(v26, v27, v28, v29, v30, v31, v32, v33,    │
00:00:25 #4797 [Verbose] > │ v34)                                                                         │
00:00:25 #4798 [Verbose] > │                         | UH0_1 -> (* Nil *)                                 │
00:00:25 #4799 [Verbose] > │                             US0_0                                            │
00:00:25 #4800 [Verbose] > │                     | UH0_1 -> (* Nil *)                                     │
00:00:25 #4801 [Verbose] > │                         US0_0                                                │
00:00:25 #4802 [Verbose] > │                 let struct (v70 : float, v71 : float, v72 : float, v73 :     │
00:00:25 #4803 [Verbose] > │ float, v74 : float, v75 : float, v76 : float, v77 : float, v78 : float) =    │
00:00:25 #4804 [Verbose] > │                     match v42 with                                           │
00:00:25 #4805 [Verbose] > │                     | US0_0 -> (* None *)                                    │
00:00:25 #4806 [Verbose] > │                         failwith<struct (float * float * float * float *     │
00:00:25 #4807 [Verbose] > │ float * float * float * float * float)> "Option does not have a value."      │
00:00:25 #4808 [Verbose] > │                     | US0_1(v43, v44, v45, v46, v47, v48, v49, v50, v51) ->  │
00:00:25 #4809 [Verbose] > │ (* Some *)                                                                   │
00:00:25 #4810 [Verbose] > │                         struct (v43, v44, v45, v46, v47, v48, v49, v50, v51) │
00:00:25 #4811 [Verbose] > │                 closure4(v70, v71, v72, v73, v74, v75, v76, v77, v78)        │
00:00:25 #4812 [Verbose] > │             else                                                             │
00:00:25 #4813 [Verbose] > │                 let v80 : bool = v3 = 1                                      │
00:00:25 #4814 [Verbose] > │                 if v80 then                                                  │
00:00:25 #4815 [Verbose] > │                     let v94 : US0 =                                          │
00:00:25 #4816 [Verbose] > │                         match v0 with                                        │
00:00:25 #4817 [Verbose] > │                         | UH0_0(v81, v82, v83, v84, v85, v86, v87, v88, v89, │
00:00:25 #4818 [Verbose] > │ v90) -> (* Cons *)                                                           │
00:00:25 #4819 [Verbose] > │                             US0_1(v81, v82, v83, v84, v85, v86, v87, v88,    │
00:00:25 #4820 [Verbose] > │ v89)                                                                         │
00:00:25 #4821 [Verbose] > │                         | UH0_1 -> (* Nil *)                                 │
00:00:25 #4822 [Verbose] > │                             US0_0                                            │
00:00:25 #4823 [Verbose] > │                     let struct (v122 : float, v123 : float, v124 : float,    │
00:00:25 #4824 [Verbose] > │ v125 : float, v126 : float, v127 : float, v128 : float, v129 : float, v130 : │
00:00:25 #4825 [Verbose] > │ float) =                                                                     │
00:00:25 #4826 [Verbose] > │                         match v94 with                                       │
00:00:25 #4827 [Verbose] > │                         | US0_0 -> (* None *)                                │
00:00:25 #4828 [Verbose] > │                             failwith<struct (float * float * float * float * │
00:00:25 #4829 [Verbose] > │ float * float * float * float * float)> "Option does not have a value."      │
00:00:25 #4830 [Verbose] > │                         | US0_1(v95, v96, v97, v98, v99, v100, v101, v102,   │
00:00:25 #4831 [Verbose] > │ v103) -> (* Some *)                                                          │
00:00:25 #4832 [Verbose] > │                             struct (v95, v96, v97, v98, v99, v100, v101,     │
00:00:25 #4833 [Verbose] > │ v102, v103)                                                                  │
00:00:25 #4834 [Verbose] > │                     closure4(v122, v123, v124, v125, v126, v127, v128, v129, │
00:00:25 #4835 [Verbose] > │ v130)                                                                        │
00:00:25 #4836 [Verbose] > │                 else                                                         │
00:00:25 #4837 [Verbose] > │                     closure5()                                               │
00:00:25 #4838 [Verbose] > │         let struct (v135 : float, v136 : float, v137 : float) = v134 struct  │
00:00:25 #4839 [Verbose] > │ (v4, v5, v6, v7, v8, v9, v10, v11, v12)                                      │
00:00:25 #4840 [Verbose] > │         let v138 : float = v135 / v5                                         │
00:00:25 #4841 [Verbose] > │         let v139 : float = v136 / v5                                         │
00:00:25 #4842 [Verbose] > │         let v140 : float = v137 / v5                                         │
00:00:25 #4843 [Verbose] > │         UH1_0(0.0, 0.0, v10, v11, v12, 1.0, v138, v139, v140, v14)           │
00:00:25 #4844 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:00:25 #4845 [Verbose] > │         v2                                                                   │
00:00:25 #4846 [Verbose] > │ and closure3 () (v0 : UH0) : UH1 =                                           │
00:00:25 #4847 [Verbose] > │     let v1 : UH3 = UH3_1                                                     │
00:00:25 #4848 [Verbose] > │     let v2 : int32 = 0                                                       │
00:00:25 #4849 [Verbose] > │     let struct (v3 : UH3, v4 : int32) = method6(v0, v1, v2)                  │
00:00:25 #4850 [Verbose] > │     let v5 : UH3 = UH3_1                                                     │
00:00:25 #4851 [Verbose] > │     let v6 : UH3 = method7(v3, v5)                                           │
00:00:25 #4852 [Verbose] > │     let v7 : UH1 = UH1_1                                                     │
00:00:25 #4853 [Verbose] > │     let v8 : UH1 = method8(v0, v6, v7)                                       │
00:00:25 #4854 [Verbose] > │     v8                                                                       │
00:00:25 #4855 [Verbose] > │ and method10 (v0 : (UH0 -> UH0), v1 : UH0, v2 : int32) : UH0 =               │
00:00:25 #4856 [Verbose] > │     let v3 : bool = v2 <= 0                                                  │
00:00:25 #4857 [Verbose] > │     if v3 then                                                               │
00:00:25 #4858 [Verbose] > │         v1                                                                   │
00:00:25 #4859 [Verbose] > │     else                                                                     │
00:00:25 #4860 [Verbose] > │         let v4 : UH0 = v0 v1                                                 │
00:00:25 #4861 [Verbose] > │         let v5 : int32 = v2 - 1                                              │
00:00:25 #4862 [Verbose] > │         method10(v0, v4, v5)                                                 │
00:00:25 #4863 [Verbose] > │ and method11 (v0 : UH4, v1 : UH4) : UH4 =                                    │
00:00:25 #4864 [Verbose] > │     match v0 with                                                            │
00:00:25 #4865 [Verbose] > │     | UH4_0(v2, v3) -> (* Cons *)                                            │
00:00:25 #4866 [Verbose] > │         let v4 : UH4 = UH4_0(v2, v1)                                         │
00:00:25 #4867 [Verbose] > │         method11(v3, v4)                                                     │
00:00:25 #4868 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:25 #4869 [Verbose] > │         v1                                                                   │
00:00:25 #4870 [Verbose] > │ and method9 (v0 : (UH0 -> UH0), v1 : UH4, v2 : int32) : UH4 =                │
00:00:25 #4871 [Verbose] > │     let v3 : float = 0.0                                                     │
00:00:25 #4872 [Verbose] > │     let v4 : float = 0.16                                                    │
00:00:25 #4873 [Verbose] > │     let v5 : float = 0.0                                                     │
00:00:25 #4874 [Verbose] > │     let v6 : float = 0.0                                                     │
00:00:25 #4875 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:25 #4876 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:25 #4877 [Verbose] > │     let v9 : float = 0.2                                                     │
00:00:25 #4878 [Verbose] > │     let v10 : float = 0.0                                                    │
00:00:25 #4879 [Verbose] > │     let v11 : float = 0.0                                                    │
00:00:25 #4880 [Verbose] > │     let v12 : float = 1.0                                                    │
00:00:25 #4881 [Verbose] > │     let v13 : float = 0.02                                                   │
00:00:25 #4882 [Verbose] > │     let v14 : float = 0.0                                                    │
00:00:25 #4883 [Verbose] > │     let v15 : float = 0.0                                                    │
00:00:25 #4884 [Verbose] > │     let v16 : float = 0.0                                                    │
00:00:25 #4885 [Verbose] > │     let v17 : float = 0.0                                                    │
00:00:25 #4886 [Verbose] > │     let v18 : UH0 = UH0_1                                                    │
00:00:25 #4887 [Verbose] > │     let v19 : UH0 = UH0_0(v3, v4, v12, v13, v14, v8, v15, v16, v17, v18)     │
00:00:25 #4888 [Verbose] > │     let v20 : UH0 = UH0_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v19)         │
00:00:25 #4889 [Verbose] > │     let v21 : UH0 = method10(v0, v20, v2)                                    │
00:00:25 #4890 [Verbose] > │     let v35 : US0 =                                                          │
00:00:25 #4891 [Verbose] > │         match v21 with                                                       │
00:00:25 #4892 [Verbose] > │         | UH0_0(v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) -> (* Cons │
00:00:25 #4893 [Verbose] > │ *)                                                                           │
00:00:25 #4894 [Verbose] > │             US0_1(v22, v23, v24, v25, v26, v27, v28, v29, v30)               │
00:00:25 #4895 [Verbose] > │         | UH0_1 -> (* Nil *)                                                 │
00:00:25 #4896 [Verbose] > │             US0_0                                                            │
00:00:25 #4897 [Verbose] > │     let struct (v63 : float, v64 : float, v65 : float, v66 : float, v67 :    │
00:00:25 #4898 [Verbose] > │ float, v68 : float, v69 : float, v70 : float, v71 : float) =                 │
00:00:25 #4899 [Verbose] > │         match v35 with                                                       │
00:00:25 #4900 [Verbose] > │         | US0_0 -> (* None *)                                                │
00:00:25 #4901 [Verbose] > │             failwith<struct (float * float * float * float * float * float * │
00:00:25 #4902 [Verbose] > │ float * float * float)> "Option does not have a value."                      │
00:00:25 #4903 [Verbose] > │         | US0_1(v36, v37, v38, v39, v40, v41, v42, v43, v44) -> (* Some *)   │
00:00:25 #4904 [Verbose] > │             struct (v36, v37, v38, v39, v40, v41, v42, v43, v44)             │
00:00:25 #4905 [Verbose] > │     let v72 : bool = v68 <= 10.0                                             │
00:00:25 #4906 [Verbose] > │     if v72 then                                                              │
00:00:25 #4907 [Verbose] > │         let v73 : UH4 = UH4_0(v21, v1)                                       │
00:00:25 #4908 [Verbose] > │         let v74 : int32 = v2 + 1                                             │
00:00:25 #4909 [Verbose] > │         method9(v0, v73, v74)                                                │
00:00:25 #4910 [Verbose] > │     else                                                                     │
00:00:25 #4911 [Verbose] > │         let v76 : UH4 = UH4_1                                                │
00:00:25 #4912 [Verbose] > │         method11(v1, v76)                                                    │
00:00:25 #4913 [Verbose] > │ and method13 (v0 : UH0, v1 : UH6) : UH6 =                                    │
00:00:25 #4914 [Verbose] > │     match v0 with                                                            │
00:00:25 #4915 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:25 #4916 [Verbose] > │         let v12 : UH6 = method13(v11, v1)                                    │
00:00:25 #4917 [Verbose] > │         let v13 : float = v8 * v8                                            │
00:00:25 #4918 [Verbose] > │         let v14 : float = v9 * v9                                            │
00:00:25 #4919 [Verbose] > │         let v15 : float = v13 + v14                                          │
00:00:25 #4920 [Verbose] > │         let v16 : float = v10 * v10                                          │
00:00:25 #4921 [Verbose] > │         let v17 : float = v15 + v16                                          │
00:00:25 #4922 [Verbose] > │         let v18 : float = sqrt v17                                           │
00:00:25 #4923 [Verbose] > │         let v19 : float = 0.5 * v3                                           │
00:00:25 #4924 [Verbose] > │         let v20 : float = v18 ** 2.0                                         │
00:00:25 #4925 [Verbose] > │         let v21 : float = v19 * v20                                          │
00:00:25 #4926 [Verbose] > │         UH6_0(v21, v12)                                                      │
00:00:25 #4927 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:25 #4928 [Verbose] > │         v1                                                                   │
00:00:25 #4929 [Verbose] > │ and method14 (v0 : UH6, v1 : float) : float =                                │
00:00:25 #4930 [Verbose] > │     match v0 with                                                            │
00:00:25 #4931 [Verbose] > │     | UH6_0(v2, v3) -> (* Cons *)                                            │
00:00:25 #4932 [Verbose] > │         let v4 : float = v1 + v2                                             │
00:00:25 #4933 [Verbose] > │         method14(v3, v4)                                                     │
00:00:25 #4934 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:25 #4935 [Verbose] > │         v1                                                                   │
00:00:25 #4936 [Verbose] > │ and method12 (v0 : UH4, v1 : UH5) : UH5 =                                    │
00:00:25 #4937 [Verbose] > │     match v0 with                                                            │
00:00:25 #4938 [Verbose] > │     | UH4_0(v2, v3) -> (* Cons *)                                            │
00:00:25 #4939 [Verbose] > │         let v4 : UH5 = method12(v3, v1)                                      │
00:00:25 #4940 [Verbose] > │         let v18 : US0 =                                                      │
00:00:25 #4941 [Verbose] > │             match v2 with                                                    │
00:00:25 #4942 [Verbose] > │             | UH0_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (* Cons  │
00:00:25 #4943 [Verbose] > │ *)                                                                           │
00:00:25 #4944 [Verbose] > │                 US0_1(v5, v6, v7, v8, v9, v10, v11, v12, v13)                │
00:00:25 #4945 [Verbose] > │             | UH0_1 -> (* Nil *)                                             │
00:00:25 #4946 [Verbose] > │                 US0_0                                                        │
00:00:25 #4947 [Verbose] > │         let struct (v46 : float, v47 : float, v48 : float, v49 : float, v50  │
00:00:25 #4948 [Verbose] > │ : float, v51 : float, v52 : float, v53 : float, v54 : float) =               │
00:00:25 #4949 [Verbose] > │             match v18 with                                                   │
00:00:25 #4950 [Verbose] > │             | US0_0 -> (* None *)                                            │
00:00:25 #4951 [Verbose] > │                 failwith<struct (float * float * float * float * float *     │
00:00:25 #4952 [Verbose] > │ float * float * float * float)> "Option does not have a value."              │
00:00:25 #4953 [Verbose] > │             | US0_1(v19, v20, v21, v22, v23, v24, v25, v26, v27) -> (* Some  │
00:00:25 #4954 [Verbose] > │ *)                                                                           │
00:00:25 #4955 [Verbose] > │                 struct (v19, v20, v21, v22, v23, v24, v25, v26, v27)         │
00:00:25 #4956 [Verbose] > │         let v55 : UH6 = UH6_1                                                │
00:00:25 #4957 [Verbose] > │         let v56 : UH6 = method13(v2, v55)                                    │
00:00:25 #4958 [Verbose] > │         let v57 : float = 0.0                                                │
00:00:25 #4959 [Verbose] > │         let v58 : float = method14(v56, v57)                                 │
00:00:25 #4960 [Verbose] > │         UH5_0(v51, v58, v4)                                                  │
00:00:25 #4961 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:25 #4962 [Verbose] > │         v1                                                                   │
00:00:25 #4963 [Verbose] > │ and method15 (v0 : UH5, v1 : UH6, v2 : UH6) : struct (UH6 * UH6) =           │
00:00:25 #4964 [Verbose] > │     match v0 with                                                            │
00:00:25 #4965 [Verbose] > │     | UH5_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:25 #4966 [Verbose] > │         let v6 : UH6 = UH6_0(v3, v1)                                         │
00:00:25 #4967 [Verbose] > │         let v7 : UH6 = UH6_0(v4, v2)                                         │
00:00:25 #4968 [Verbose] > │         method15(v5, v6, v7)                                                 │
00:00:25 #4969 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:25 #4970 [Verbose] > │         struct (v1, v2)                                                      │
00:00:25 #4971 [Verbose] > │ and method16 (v0 : UH6, v1 : UH6) : UH6 =                                    │
00:00:25 #4972 [Verbose] > │     match v0 with                                                            │
00:00:25 #4973 [Verbose] > │     | UH6_0(v2, v3) -> (* Cons *)                                            │
00:00:25 #4974 [Verbose] > │         let v4 : UH6 = UH6_0(v2, v1)                                         │
00:00:25 #4975 [Verbose] > │         method16(v3, v4)                                                     │
00:00:25 #4976 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:25 #4977 [Verbose] > │         v1                                                                   │
00:00:25 #4978 [Verbose] > │ and method18 (v0 : UH1, v1 : UH1) : UH1 =                                    │
00:00:25 #4979 [Verbose] > │     match v0 with                                                            │
00:00:25 #4980 [Verbose] > │     | UH1_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* Cons *)          │
00:00:25 #4981 [Verbose] > │         let v12 : UH1 = UH1_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v1)       │
00:00:25 #4982 [Verbose] > │         method18(v11, v12)                                                   │
00:00:25 #4983 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:25 #4984 [Verbose] > │         v1                                                                   │
00:00:25 #4985 [Verbose] > │ and method17 (v0 : UH1, v1 : UH1, v2 : UH1) : UH1 =                          │
00:00:25 #4986 [Verbose] > │     match v1 with                                                            │
00:00:25 #4987 [Verbose] > │     | UH1_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* Cons *)         │
00:00:25 #4988 [Verbose] > │         match v2 with                                                        │
00:00:25 #4989 [Verbose] > │         | UH1_0(v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) -> (* Cons │
00:00:25 #4990 [Verbose] > │ *)                                                                           │
00:00:25 #4991 [Verbose] > │             let v23 : float = v3 + v13                                       │
00:00:25 #4992 [Verbose] > │             let v24 : float = v4 + v14                                       │
00:00:25 #4993 [Verbose] > │             let v25 : float = v8 + v18                                       │
00:00:25 #4994 [Verbose] > │             let v26 : float = v5 + v15                                       │
00:00:25 #4995 [Verbose] > │             let v27 : float = v6 + v16                                       │
00:00:25 #4996 [Verbose] > │             let v28 : float = v7 + v17                                       │
00:00:25 #4997 [Verbose] > │             let v29 : float = v9 + v19                                       │
00:00:25 #4998 [Verbose] > │             let v30 : float = v10 + v20                                      │
00:00:25 #4999 [Verbose] > │             let v31 : float = v11 + v21                                      │
00:00:25 #5000 [Verbose] > │             let v32 : UH1 = UH1_0(v23, v24, v26, v27, v28, v25, v29, v30,    │
00:00:25 #5001 [Verbose] > │ v31, v0)                                                                     │
00:00:25 #5002 [Verbose] > │             method17(v32, v12, v22)                                          │
00:00:25 #5003 [Verbose] > │         | _ ->                                                               │
00:00:25 #5004 [Verbose] > │             let v34 : UH1 = UH1_1                                            │
00:00:25 #5005 [Verbose] > │             method18(v0, v34)                                                │
00:00:25 #5006 [Verbose] > │     | _ ->                                                                   │
00:00:25 #5007 [Verbose] > │         let v37 : UH1 = UH1_1                                                │
00:00:25 #5008 [Verbose] > │         method18(v0, v37)                                                    │
00:00:25 #5009 [Verbose] > │ and closure8 (v0 : float, v1 : (UH0 -> UH1)) (v2 : UH0) : UH0 =              │
00:00:25 #5010 [Verbose] > │     let v3 : UH1 = v1 v2                                                     │
00:00:25 #5011 [Verbose] > │     let v4 : float = v0 / 2.0                                                │
00:00:25 #5012 [Verbose] > │     let v5 : UH0 = UH0_1                                                     │
00:00:25 #5013 [Verbose] > │     let v6 : UH0 = method1(v4, v5, v3, v2)                                   │
00:00:25 #5014 [Verbose] > │     let v7 : UH1 = v1 v6                                                     │
00:00:25 #5015 [Verbose] > │     let v8 : UH0 = UH0_1                                                     │
00:00:25 #5016 [Verbose] > │     let v9 : UH0 = method1(v4, v8, v7, v2)                                   │
00:00:25 #5017 [Verbose] > │     let v10 : UH1 = v1 v9                                                    │
00:00:25 #5018 [Verbose] > │     let v11 : UH0 = UH0_1                                                    │
00:00:25 #5019 [Verbose] > │     let v12 : UH0 = method1(v0, v11, v10, v2)                                │
00:00:25 #5020 [Verbose] > │     let v13 : UH1 = v1 v12                                                   │
00:00:25 #5021 [Verbose] > │     let v14 : float = v0 / 6.0                                               │
00:00:25 #5022 [Verbose] > │     let v15 : UH1 = UH1_1                                                    │
00:00:25 #5023 [Verbose] > │     let v16 : UH1 = method17(v15, v3, v7)                                    │
00:00:25 #5024 [Verbose] > │     let v17 : UH1 = UH1_1                                                    │
00:00:25 #5025 [Verbose] > │     let v18 : UH1 = method17(v17, v16, v7)                                   │
00:00:25 #5026 [Verbose] > │     let v19 : UH1 = UH1_1                                                    │
00:00:25 #5027 [Verbose] > │     let v20 : UH1 = method17(v19, v18, v10)                                  │
00:00:25 #5028 [Verbose] > │     let v21 : UH1 = UH1_1                                                    │
00:00:25 #5029 [Verbose] > │     let v22 : UH1 = method17(v21, v20, v10)                                  │
00:00:25 #5030 [Verbose] > │     let v23 : UH1 = UH1_1                                                    │
00:00:25 #5031 [Verbose] > │     let v24 : UH1 = method17(v23, v22, v13)                                  │
00:00:25 #5032 [Verbose] > │     let v25 : UH0 = UH0_1                                                    │
00:00:25 #5033 [Verbose] > │     let v26 : UH0 = method1(v14, v25, v24, v2)                               │
00:00:25 #5034 [Verbose] > │     v26                                                                      │
00:00:25 #5035 [Verbose] > │ and closure7 (v0 : float) (v1 : (UH0 -> UH1)) : (UH0 -> UH0) =               │
00:00:25 #5036 [Verbose] > │     closure8(v0, v1)                                                         │
00:00:25 #5037 [Verbose] > │ and closure6 () (v0 : float) : ((UH0 -> UH1) -> (UH0 -> UH0)) =              │
00:00:25 #5038 [Verbose] > │     closure7(v0)                                                             │
00:00:25 #5039 [Verbose] > │ and method19 (v0 : UH4, v1 : UH5) : UH5 =                                    │
00:00:25 #5040 [Verbose] > │     match v0 with                                                            │
00:00:25 #5041 [Verbose] > │     | UH4_0(v2, v3) -> (* Cons *)                                            │
00:00:25 #5042 [Verbose] > │         let v4 : UH5 = method19(v3, v1)                                      │
00:00:25 #5043 [Verbose] > │         let v18 : US0 =                                                      │
00:00:25 #5044 [Verbose] > │             match v2 with                                                    │
00:00:25 #5045 [Verbose] > │             | UH0_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (* Cons  │
00:00:25 #5046 [Verbose] > │ *)                                                                           │
00:00:25 #5047 [Verbose] > │                 US0_1(v5, v6, v7, v8, v9, v10, v11, v12, v13)                │
00:00:25 #5048 [Verbose] > │             | UH0_1 -> (* Nil *)                                             │
00:00:25 #5049 [Verbose] > │                 US0_0                                                        │
00:00:25 #5050 [Verbose] > │         let struct (v46 : float, v47 : float, v48 : float, v49 : float, v50  │
00:00:25 #5051 [Verbose] > │ : float, v51 : float, v52 : float, v53 : float, v54 : float) =               │
00:00:25 #5052 [Verbose] > │             match v18 with                                                   │
00:00:25 #5053 [Verbose] > │             | US0_0 -> (* None *)                                            │
00:00:25 #5054 [Verbose] > │                 failwith<struct (float * float * float * float * float *     │
00:00:25 #5055 [Verbose] > │ float * float * float * float)> "Option does not have a value."              │
00:00:25 #5056 [Verbose] > │             | US0_1(v19, v20, v21, v22, v23, v24, v25, v26, v27) -> (* Some  │
00:00:25 #5057 [Verbose] > │ *)                                                                           │
00:00:25 #5058 [Verbose] > │                 struct (v19, v20, v21, v22, v23, v24, v25, v26, v27)         │
00:00:25 #5059 [Verbose] > │         let v55 : UH6 = UH6_1                                                │
00:00:25 #5060 [Verbose] > │         let v56 : UH6 = method13(v2, v55)                                    │
00:00:25 #5061 [Verbose] > │         let v57 : float = 0.0                                                │
00:00:25 #5062 [Verbose] > │         let v58 : float = method14(v56, v57)                                 │
00:00:25 #5063 [Verbose] > │         UH5_0(v51, v58, v4)                                                  │
00:00:25 #5064 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:25 #5065 [Verbose] > │         v1                                                                   │
00:00:25 #5066 [Verbose] > │ and method21 (v0 : UH6, v1 : int32) : int32 =                                │
00:00:25 #5067 [Verbose] > │     match v0 with                                                            │
00:00:25 #5068 [Verbose] > │     | UH6_0(v2, v3) -> (* Cons *)                                            │
00:00:25 #5069 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:25 #5070 [Verbose] > │         method21(v3, v4)                                                     │
00:00:25 #5071 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:25 #5072 [Verbose] > │         v1                                                                   │
00:00:25 #5073 [Verbose] > │ and method22 (v0 : (float []), v1 : UH6, v2 : int32) : int32 =               │
00:00:25 #5074 [Verbose] > │     match v1 with                                                            │
00:00:25 #5075 [Verbose] > │     | UH6_0(v3, v4) -> (* Cons *)                                            │
00:00:25 #5076 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:25 #5077 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:25 #5078 [Verbose] > │         method22(v0, v4, v5)                                                 │
00:00:25 #5079 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:25 #5080 [Verbose] > │         v2                                                                   │
00:00:25 #5081 [Verbose] > │ and method20 (v0 : UH6) : (float []) =                                       │
00:00:25 #5082 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:25 #5083 [Verbose] > │     let v2 : int32 = method21(v0, v1)                                        │
00:00:25 #5084 [Verbose] > │     let v3 : (float []) = Array.zeroCreate<float> (v2)                       │
00:00:25 #5085 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:25 #5086 [Verbose] > │     let v5 : int32 = method22(v3, v0, v4)                                    │
00:00:25 #5087 [Verbose] > │     v3                                                                       │
00:00:25 #5088 [Verbose] > │ and method23 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:25 #5089 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:25 #5090 [Verbose] > │     v0                                                                       │
00:00:25 #5091 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:25 #5092 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:25 #5093 [Verbose] > │     let v0 : (float -> ((UH0 -> UH1) -> (UH0 -> UH0))) = closure0()          │
00:00:25 #5094 [Verbose] > │     let v1 : ((UH0 -> UH1) -> (UH0 -> UH0)) = v0 0.03                        │
00:00:25 #5095 [Verbose] > │     let v2 : (UH0 -> UH1) = closure3()                                       │
00:00:25 #5096 [Verbose] > │     let v3 : (UH0 -> UH0) = v1 v2                                            │
00:00:25 #5097 [Verbose] > │     let v4 : UH4 = UH4_1                                                     │
00:00:25 #5098 [Verbose] > │     let v5 : int32 = 0                                                       │
00:00:25 #5099 [Verbose] > │     let v6 : UH4 = method9(v3, v4, v5)                                       │
00:00:25 #5100 [Verbose] > │     let v7 : UH5 = UH5_1                                                     │
00:00:25 #5101 [Verbose] > │     let v8 : UH5 = method12(v6, v7)                                          │
00:00:25 #5102 [Verbose] > │     let v9 : UH6 = UH6_1                                                     │
00:00:25 #5103 [Verbose] > │     let v10 : UH6 = UH6_1                                                    │
00:00:25 #5104 [Verbose] > │     let struct (v11 : UH6, v12 : UH6) = method15(v8, v9, v10)                │
00:00:25 #5105 [Verbose] > │     let v13 : UH6 = UH6_1                                                    │
00:00:25 #5106 [Verbose] > │     let v14 : UH6 = method16(v11, v13)                                       │
00:00:25 #5107 [Verbose] > │     let v15 : UH6 = UH6_1                                                    │
00:00:25 #5108 [Verbose] > │     let v16 : UH6 = method16(v12, v15)                                       │
00:00:25 #5109 [Verbose] > │     let v17 : (float -> ((UH0 -> UH1) -> (UH0 -> UH0))) = closure6()         │
00:00:25 #5110 [Verbose] > │     let v18 : ((UH0 -> UH1) -> (UH0 -> UH0)) = v17 0.03                      │
00:00:25 #5111 [Verbose] > │     let v19 : (UH0 -> UH0) = v18 v2                                          │
00:00:25 #5112 [Verbose] > │     let v20 : UH4 = UH4_1                                                    │
00:00:25 #5113 [Verbose] > │     let v21 : int32 = 0                                                      │
00:00:25 #5114 [Verbose] > │     let v22 : UH4 = method9(v19, v20, v21)                                   │
00:00:25 #5115 [Verbose] > │     let v23 : UH5 = UH5_1                                                    │
00:00:25 #5116 [Verbose] > │     let v24 : UH5 = method19(v22, v23)                                       │
00:00:25 #5117 [Verbose] > │     let v25 : UH6 = UH6_1                                                    │
00:00:25 #5118 [Verbose] > │     let v26 : UH6 = UH6_1                                                    │
00:00:25 #5119 [Verbose] > │     let struct (v27 : UH6, v28 : UH6) = method15(v24, v25, v26)              │
00:00:25 #5120 [Verbose] > │     let v29 : UH6 = UH6_1                                                    │
00:00:25 #5121 [Verbose] > │     let v30 : UH6 = method16(v27, v29)                                       │
00:00:25 #5122 [Verbose] > │     let v31 : UH6 = UH6_1                                                    │
00:00:25 #5123 [Verbose] > │     let v32 : UH6 = method16(v28, v31)                                       │
00:00:25 #5124 [Verbose] > │     let v33 : (float []) = method20(v14)                                     │
00:00:25 #5125 [Verbose] > │     let v34 : (float []) = method20(v16)                                     │
00:00:25 #5126 [Verbose] > │     let v35 : (float []) = method20(v30)                                     │
00:00:25 #5127 [Verbose] > │     let v36 : (float []) = method20(v32)                                     │
00:00:25 #5128 [Verbose] > │     let v37 : string = "euler-cromer"                                        │
00:00:25 #5129 [Verbose] > │     let v38 : string = "runge-kutta 4"                                       │
00:00:25 #5130 [Verbose] > │     let v39 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:25 #5131 [Verbose] > │ (v37, v33, v34); struct (v38, v35, v36)|]                                    │
00:00:25 #5132 [Verbose] > │     let v40 : (struct (string * (float []) * (float [])) []) = method23(v39) │
00:00:25 #5133 [Verbose] > │     let v41 : string = "system kinetic energy versus time"                   │
00:00:25 #5134 [Verbose] > │     let v42 : string = "time (s)"                                            │
00:00:25 #5135 [Verbose] > │     let v43 : string = "system kinetic energy (j)"                           │
00:00:25 #5136 [Verbose] > │     struct (v41, v42, v43, v40)                                              │
00:00:25 #5137 [Verbose] > │ method0()                                                                    │
00:00:25 #5138 [Verbose] > │                                                                              │
00:00:25 #5139 [Verbose] > │                                                                              │
00:00:25 #5140 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #5141 [Verbose] >
00:00:25 #5142 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 #5143 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 #5144 [Verbose] > │ ### wave 1                                                                   │
00:00:25 #5145 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #5146 [Verbose] >
00:00:25 #5147 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 #5148 [Verbose] > // // test
00:00:25 #5149 [Verbose] >
00:00:25 #5150 [Verbose] > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:00:25 #5151 [Verbose] >     inl r1 = st1.pos_vec
00:00:25 #5152 [Verbose] >     inl r2 = st2.pos_vec
00:00:25 #5153 [Verbose] >     inl r21 = r2 ^-^ r1
00:00:25 #5154 [Verbose] >     inl r21mag = magnitude r21
00:00:25 #5155 [Verbose] >     -k * (r21mag - re) *^ r21 ^/ r21mag
00:00:25 #5156 [Verbose] >
00:00:25 #5157 [Verbose] > inl fixed_linear_spring k re r1 =
00:00:25 #5158 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:25 #5159 [Verbose] >     linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:00:25 #5160 [Verbose] > r1 })
00:00:25 #5161 [Verbose] >
00:00:25 #5162 [Verbose] > inl forces_string () =
00:00:25 #5163 [Verbose] >     [[
00:00:25 #5164 [Verbose] >         ExternalForce (0, fixed_linear_spring 5384 0 (zero_vec ()))
00:00:25 #5165 [Verbose] >         ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:00:25 #5166 [Verbose] >     ]] /@ (
00:00:25 #5167 [Verbose] >         listm'.init_series 0 59 1
00:00:25 #5168 [Verbose] >         |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:00:25 #5169 [Verbose] >     )
00:00:25 #5170 [Verbose] >
00:00:25 #5171 [Verbose] > inl string_update dt =
00:00:25 #5172 [Verbose] >     update_mps (runge_kutta_4 dt) (forces_string ())
00:00:25 #5173 [Verbose] >
00:00:25 #5174 [Verbose] > inl string_initial_overtone n =
00:00:25 #5175 [Verbose] >     inl ball_mass = 0.0008293 * 0.65 / 64
00:00:25 #5176 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:25 #5177 [Verbose] >     listm'.init_series 0.01 0.64 0.01
00:00:25 #5178 [Verbose] >     |> listm.map (fun x =>
00:00:25 #5179 [Verbose] >         inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:00:25 #5180 [Verbose] >         particle_state {
00:00:25 #5181 [Verbose] >             default_particle_state' with
00:00:25 #5182 [Verbose] >                 mass = ball_mass
00:00:25 #5183 [Verbose] >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:00:25 #5184 [Verbose] >                 velocity = zero_vec ()
00:00:25 #5185 [Verbose] >         }
00:00:25 #5186 [Verbose] >     )
00:00:25 #5187 [Verbose] >     |> multi_particle_state
00:00:25 #5188 [Verbose] >
00:00:25 #5189 [Verbose] > inl string_initial_pluck () =
00:00:25 #5190 [Verbose] >     inl ball_mass = 0.0008293 * 0.65 / 64
00:00:25 #5191 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:25 #5192 [Verbose] >     listm'.init_series 0.01 0.64 0.01
00:00:25 #5193 [Verbose] >     |> listm.map (fun x =>
00:00:25 #5194 [Verbose] >         inl y =
00:00:25 #5195 [Verbose] >             inl n = if x <= 0.51 then 0 else 0.65
00:00:25 #5196 [Verbose] >             0.005 / (0.51 - n) * (x - n)
00:00:25 #5197 [Verbose] >         particle_state {
00:00:25 #5198 [Verbose] >             default_particle_state' with
00:00:25 #5199 [Verbose] >                 mass = ball_mass
00:00:25 #5200 [Verbose] >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:00:25 #5201 [Verbose] >                 velocity = zero_vec ()
00:00:25 #5202 [Verbose] >         }
00:00:25 #5203 [Verbose] >     )
00:00:25 #5204 [Verbose] >     |> multi_particle_state
00:00:25 #5205 [Verbose] >
00:00:25 #5206 [Verbose] > let main () =
00:00:25 #5207 [Verbose] >     inl ~frames = listm'.init_series 0 9 1f64
00:00:25 #5208 [Verbose] >     inl initial_state = string_initial_overtone 3i32
00:00:25 #5209 [Verbose] >     inl frames =
00:00:25 #5210 [Verbose] >         frames
00:00:25 #5211 [Verbose] >         |> listm.map (fun n =>
00:00:25 #5212 [Verbose] >             inl (multi_particle_state sts) =
00:00:25 #5213 [Verbose] >                 seq.iterate' (string_update 0.000025) initial_state |> fun f =>
00:00:25 #5214 [Verbose] > f 0f64
00:00:25 #5215 [Verbose] >             inl rs =
00:00:25 #5216 [Verbose] >                 [[ zero_vec () ]]
00:00:25 #5217 [Verbose] >                 /@ (sts |> listm.map (fun (particle_state st) => st.pos_vec))
00:00:25 #5218 [Verbose] >                 /@ [[ 0.65 *^ i_hat () ]]
00:00:25 #5219 [Verbose] >             inl x, y =
00:00:25 #5220 [Verbose] >                 rs
00:00:25 #5221 [Verbose] >                 |> listm.map (fun r => r.x, r.y)
00:00:25 #5222 [Verbose] >                 |> listm'.unzip
00:00:25 #5223 [Verbose] >             inl x : a i32 _ = x |> listm.toArray
00:00:25 #5224 [Verbose] >             inl y : a i32 _ = y |> listm.toArray
00:00:25 #5225 [Verbose] >             x, y
00:00:25 #5226 [Verbose] >         )
00:00:25 #5227 [Verbose] >         |> listm.toArray : a i32 _
00:00:25 #5228 [Verbose] >
00:00:25 #5229 [Verbose] >     inl n = 0i32
00:00:25 #5230 [Verbose] >
00:00:25 #5231 [Verbose] >     inl x, y = index frames n
00:00:25 #5232 [Verbose] >
00:00:25 #5233 [Verbose] >     "wave",
00:00:25 #5234 [Verbose] >     "position (m)",
00:00:25 #5235 [Verbose] >     "displacement (m)",
00:00:25 #5236 [Verbose] >     ;[[
00:00:25 #5237 [Verbose] >         ($"$\"{!n}\"" : string), x, y
00:00:25 #5238 [Verbose] >     ]]
00:00:25 #5239 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1909-0977-0a6720be713a/main.spi
00:00:25 #5240 [Verbose] >
00:00:25 #5241 [Verbose] > ╭─[ 317.97ms - return value ]──────────────────────────────────────────────────╮
00:00:25 #5242 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:25 #5243 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:25 #5244 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:25 #5245 [Verbose] > │ stroke="none"/>                                                              │
00:00:25 #5246 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:25 #5247 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:25 #5248 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:25 #5249 [Verbose] > │ wave                                                                         │
00:00:25 #5250 [Verbose] > │ </text>                                                                      │
00:00:25 #5251 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:00:25 #5252 [Verbose] > │ y2="75"/>                                                                    │
00:00:25 #5253 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:25 #5254 [Verbose] > │ y2="75"/>                                                                    │
00:00:25 #5255 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:00:25 #5256 [Verbose] > │ y2="75"/>                                                                    │
00:00:25 #5257 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │
00:00:25 #5258 [Verbose] > │ y2="75"/>                                                                    │
00:00:25 #5259 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:00:25 #5260 [Verbose] > │ y2...                                                                        │
00:00:25 #5261 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #5262 [Verbose] >
00:00:25 #5263 [Verbose] > ╭─[ 321.21ms - stdout ]────────────────────────────────────────────────────────╮
00:00:25 #5264 [Verbose] > │ type UH0 =                                                                   │
00:00:25 #5265 [Verbose] > │     | UH0_0 of float * UH0                                                   │
00:00:25 #5266 [Verbose] > │     | UH0_1                                                                  │
00:00:25 #5267 [Verbose] > │ and UH1 =                                                                    │
00:00:25 #5268 [Verbose] > │     | UH1_0 of (float []) * (float []) * UH1                                 │
00:00:25 #5269 [Verbose] > │     | UH1_1                                                                  │
00:00:25 #5270 [Verbose] > │ let rec method3 (v0 : UH0, v1 : int32) : int32 =                             │
00:00:25 #5271 [Verbose] > │     match v0 with                                                            │
00:00:25 #5272 [Verbose] > │     | UH0_0(v2, v3) -> (* Cons *)                                            │
00:00:25 #5273 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:25 #5274 [Verbose] > │         method3(v3, v4)                                                      │
00:00:25 #5275 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:25 #5276 [Verbose] > │         v1                                                                   │
00:00:25 #5277 [Verbose] > │ and method4 (v0 : (float []), v1 : UH0, v2 : int32) : int32 =                │
00:00:25 #5278 [Verbose] > │     match v1 with                                                            │
00:00:25 #5279 [Verbose] > │     | UH0_0(v3, v4) -> (* Cons *)                                            │
00:00:25 #5280 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:25 #5281 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:25 #5282 [Verbose] > │         method4(v0, v4, v5)                                                  │
00:00:25 #5283 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:25 #5284 [Verbose] > │         v2                                                                   │
00:00:25 #5285 [Verbose] > │ and method2 (v0 : UH0) : (float []) =                                        │
00:00:25 #5286 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:25 #5287 [Verbose] > │     let v2 : int32 = method3(v0, v1)                                         │
00:00:25 #5288 [Verbose] > │     let v3 : (float []) = Array.zeroCreate<float> (v2)                       │
00:00:25 #5289 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:25 #5290 [Verbose] > │     let v5 : int32 = method4(v3, v0, v4)                                     │
00:00:25 #5291 [Verbose] > │     v3                                                                       │
00:00:25 #5292 [Verbose] > │ and method1 (v0 : UH0, v1 : UH1) : UH1 =                                     │
00:00:25 #5293 [Verbose] > │     match v0 with                                                            │
00:00:25 #5294 [Verbose] > │     | UH0_0(v2, v3) -> (* Cons *)                                            │
00:00:25 #5295 [Verbose] > │         let v4 : UH1 = method1(v3, v1)                                       │
00:00:25 #5296 [Verbose] > │         let v5 : float = 0.0                                                 │
00:00:25 #5297 [Verbose] > │         let v6 : float = 0.01                                                │
00:00:25 #5298 [Verbose] > │         let v7 : float = 0.02                                                │
00:00:25 #5299 [Verbose] > │         let v8 : float = 0.03                                                │
00:00:25 #5300 [Verbose] > │         let v9 : float = 0.04                                                │
00:00:25 #5301 [Verbose] > │         let v10 : float = 0.05                                               │
00:00:25 #5302 [Verbose] > │         let v11 : float = 0.060000000000000005                               │
00:00:25 #5303 [Verbose] > │         let v12 : float = 0.06999999999999999                                │
00:00:25 #5304 [Verbose] > │         let v13 : float = 0.08                                               │
00:00:25 #5305 [Verbose] > │         let v14 : float = 0.09                                               │
00:00:25 #5306 [Verbose] > │         let v15 : float = 0.09999999999999999                                │
00:00:25 #5307 [Verbose] > │         let v16 : float = 0.11                                               │
00:00:25 #5308 [Verbose] > │         let v17 : float = 0.12                                               │
00:00:25 #5309 [Verbose] > │         let v18 : float = 0.13                                               │
00:00:25 #5310 [Verbose] > │         let v19 : float = 0.14                                               │
00:00:25 #5311 [Verbose] > │         let v20 : float = 0.15000000000000002                                │
00:00:25 #5312 [Verbose] > │         let v21 : float = 0.16                                               │
00:00:25 #5313 [Verbose] > │         let v22 : float = 0.17                                               │
00:00:25 #5314 [Verbose] > │         let v23 : float = 0.18000000000000002                                │
00:00:25 #5315 [Verbose] > │         let v24 : float = 0.19                                               │
00:00:25 #5316 [Verbose] > │         let v25 : float = 0.2                                                │
00:00:25 #5317 [Verbose] > │         let v26 : float = 0.21000000000000002                                │
00:00:25 #5318 [Verbose] > │         let v27 : float = 0.22                                               │
00:00:25 #5319 [Verbose] > │         let v28 : float = 0.23                                               │
00:00:25 #5320 [Verbose] > │         let v29 : float = 0.24000000000000002                                │
00:00:25 #5321 [Verbose] > │         let v30 : float = 0.25                                               │
00:00:25 #5322 [Verbose] > │         let v31 : float = 0.26                                               │
00:00:25 #5323 [Verbose] > │         let v32 : float = 0.27                                               │
00:00:25 #5324 [Verbose] > │         let v33 : float = 0.28                                               │
00:00:25 #5325 [Verbose] > │         let v34 : float = 0.29000000000000004                                │
00:00:25 #5326 [Verbose] > │         let v35 : float = 0.3                                                │
00:00:25 #5327 [Verbose] > │         let v36 : float = 0.31                                               │
00:00:25 #5328 [Verbose] > │         let v37 : float = 0.32                                               │
00:00:25 #5329 [Verbose] > │         let v38 : float = 0.33                                               │
00:00:25 #5330 [Verbose] > │         let v39 : float = 0.34                                               │
00:00:25 #5331 [Verbose] > │         let v40 : float = 0.35000000000000003                                │
00:00:25 #5332 [Verbose] > │         let v41 : float = 0.36000000000000004                                │
00:00:25 #5333 [Verbose] > │         let v42 : float = 0.37                                               │
00:00:25 #5334 [Verbose] > │         let v43 : float = 0.38                                               │
00:00:25 #5335 [Verbose] > │         let v44 : float = 0.39                                               │
00:00:25 #5336 [Verbose] > │         let v45 : float = 0.4                                                │
00:00:25 #5337 [Verbose] > │         let v46 : float = 0.41000000000000003                                │
00:00:25 #5338 [Verbose] > │         let v47 : float = 0.42000000000000004                                │
00:00:25 #5339 [Verbose] > │         let v48 : float = 0.43                                               │
00:00:25 #5340 [Verbose] > │         let v49 : float = 0.44                                               │
00:00:25 #5341 [Verbose] > │         let v50 : float = 0.45                                               │
00:00:25 #5342 [Verbose] > │         let v51 : float = 0.46                                               │
00:00:25 #5343 [Verbose] > │         let v52 : float = 0.47000000000000003                                │
00:00:25 #5344 [Verbose] > │         let v53 : float = 0.48000000000000004                                │
00:00:25 #5345 [Verbose] > │         let v54 : float = 0.49                                               │
00:00:25 #5346 [Verbose] > │         let v55 : float = 0.5                                                │
00:00:25 #5347 [Verbose] > │         let v56 : float = 0.51                                               │
00:00:25 #5348 [Verbose] > │         let v57 : float = 0.52                                               │
00:00:25 #5349 [Verbose] > │         let v58 : float = 0.53                                               │
00:00:25 #5350 [Verbose] > │         let v59 : float = 0.54                                               │
00:00:25 #5351 [Verbose] > │         let v60 : float = 0.55                                               │
00:00:25 #5352 [Verbose] > │         let v61 : float = 0.56                                               │
00:00:25 #5353 [Verbose] > │         let v62 : float = 0.5700000000000001                                 │
00:00:25 #5354 [Verbose] > │         let v63 : float = 0.5800000000000001                                 │
00:00:25 #5355 [Verbose] > │         let v64 : float = 0.59                                               │
00:00:25 #5356 [Verbose] > │         let v65 : float = 0.6                                                │
00:00:25 #5357 [Verbose] > │         let v66 : float = 0.61                                               │
00:00:25 #5358 [Verbose] > │         let v67 : float = 0.62                                               │
00:00:25 #5359 [Verbose] > │         let v68 : float = 0.63                                               │
00:00:25 #5360 [Verbose] > │         let v69 : float = 0.64                                               │
00:00:25 #5361 [Verbose] > │         let v70 : float = 0.65                                               │
00:00:25 #5362 [Verbose] > │         let v71 : UH0 = UH0_1                                                │
00:00:25 #5363 [Verbose] > │         let v72 : UH0 = UH0_0(v70, v71)                                      │
00:00:25 #5364 [Verbose] > │         let v73 : UH0 = UH0_0(v69, v72)                                      │
00:00:25 #5365 [Verbose] > │         let v74 : UH0 = UH0_0(v68, v73)                                      │
00:00:25 #5366 [Verbose] > │         let v75 : UH0 = UH0_0(v67, v74)                                      │
00:00:25 #5367 [Verbose] > │         let v76 : UH0 = UH0_0(v66, v75)                                      │
00:00:25 #5368 [Verbose] > │         let v77 : UH0 = UH0_0(v65, v76)                                      │
00:00:25 #5369 [Verbose] > │         let v78 : UH0 = UH0_0(v64, v77)                                      │
00:00:25 #5370 [Verbose] > │         let v79 : UH0 = UH0_0(v63, v78)                                      │
00:00:25 #5371 [Verbose] > │         let v80 : UH0 = UH0_0(v62, v79)                                      │
00:00:25 #5372 [Verbose] > │         let v81 : UH0 = UH0_0(v61, v80)                                      │
00:00:25 #5373 [Verbose] > │         let v82 : UH0 = UH0_0(v60, v81)                                      │
00:00:25 #5374 [Verbose] > │         let v83 : UH0 = UH0_0(v59, v82)                                      │
00:00:25 #5375 [Verbose] > │         let v84 : UH0 = UH0_0(v58, v83)                                      │
00:00:25 #5376 [Verbose] > │         let v85 : UH0 = UH0_0(v57, v84)                                      │
00:00:25 #5377 [Verbose] > │         let v86 : UH0 = UH0_0(v56, v85)                                      │
00:00:25 #5378 [Verbose] > │         let v87 : UH0 = UH0_0(v55, v86)                                      │
00:00:25 #5379 [Verbose] > │         let v88 : UH0 = UH0_0(v54, v87)                                      │
00:00:25 #5380 [Verbose] > │         let v89 : UH0 = UH0_0(v53, v88)                                      │
00:00:25 #5381 [Verbose] > │         let v90 : UH0 = UH0_0(v52, v89)                                      │
00:00:25 #5382 [Verbose] > │         let v91 : UH0 = UH0_0(v51, v90)                                      │
00:00:25 #5383 [Verbose] > │         let v92 : UH0 = UH0_0(v50, v91)                                      │
00:00:25 #5384 [Verbose] > │         let v93 : UH0 = UH0_0(v49, v92)                                      │
00:00:25 #5385 [Verbose] > │         let v94 : UH0 = UH0_0(v48, v93)                                      │
00:00:25 #5386 [Verbose] > │         let v95 : UH0 = UH0_0(v47, v94)                                      │
00:00:25 #5387 [Verbose] > │         let v96 : UH0 = UH0_0(v46, v95)                                      │
00:00:25 #5388 [Verbose] > │         let v97 : UH0 = UH0_0(v45, v96)                                      │
00:00:25 #5389 [Verbose] > │         let v98 : UH0 = UH0_0(v44, v97)                                      │
00:00:25 #5390 [Verbose] > │         let v99 : UH0 = UH0_0(v43, v98)                                      │
00:00:25 #5391 [Verbose] > │         let v100 : UH0 = UH0_0(v42, v99)                                     │
00:00:25 #5392 [Verbose] > │         let v101 : UH0 = UH0_0(v41, v100)                                    │
00:00:25 #5393 [Verbose] > │         let v102 : UH0 = UH0_0(v40, v101)                                    │
00:00:25 #5394 [Verbose] > │         let v103 : UH0 = UH0_0(v39, v102)                                    │
00:00:25 #5395 [Verbose] > │         let v104 : UH0 = UH0_0(v38, v103)                                    │
00:00:25 #5396 [Verbose] > │         let v105 : UH0 = UH0_0(v37, v104)                                    │
00:00:25 #5397 [Verbose] > │         let v106 : UH0 = UH0_0(v36, v105)                                    │
00:00:25 #5398 [Verbose] > │         let v107 : UH0 = UH0_0(v35, v106)                                    │
00:00:25 #5399 [Verbose] > │         let v108 : UH0 = UH0_0(v34, v107)                                    │
00:00:25 #5400 [Verbose] > │         let v109 : UH0 = UH0_0(v33, v108)                                    │
00:00:25 #5401 [Verbose] > │         let v110 : UH0 = UH0_0(v32, v109)                                    │
00:00:25 #5402 [Verbose] > │         let v111 : UH0 = UH0_0(v31, v110)                                    │
00:00:25 #5403 [Verbose] > │         let v112 : UH0 = UH0_0(v30, v111)                                    │
00:00:25 #5404 [Verbose] > │         let v113 : UH0 = UH0_0(v29, v112)                                    │
00:00:25 #5405 [Verbose] > │         let v114 : UH0 = UH0_0(v28, v113)                                    │
00:00:25 #5406 [Verbose] > │         let v115 : UH0 = UH0_0(v27, v114)                                    │
00:00:25 #5407 [Verbose] > │         let v116 : UH0 = UH0_0(v26, v115)                                    │
00:00:25 #5408 [Verbose] > │         let v117 : UH0 = UH0_0(v25, v116)                                    │
00:00:25 #5409 [Verbose] > │         let v118 : UH0 = UH0_0(v24, v117)                                    │
00:00:25 #5410 [Verbose] > │         let v119 : UH0 = UH0_0(v23, v118)                                    │
00:00:25 #5411 [Verbose] > │         let v120 : UH0 = UH0_0(v22, v119)                                    │
00:00:25 #5412 [Verbose] > │         let v121 : UH0 = UH0_0(v21, v120)                                    │
00:00:25 #5413 [Verbose] > │         let v122 : UH0 = UH0_0(v20, v121)                                    │
00:00:25 #5414 [Verbose] > │         let v123 : UH0 = UH0_0(v19, v122)                                    │
00:00:25 #5415 [Verbose] > │         let v124 : UH0 = UH0_0(v18, v123)                                    │
00:00:25 #5416 [Verbose] > │         let v125 : UH0 = UH0_0(v17, v124)                                    │
00:00:25 #5417 [Verbose] > │         let v126 : UH0 = UH0_0(v16, v125)                                    │
00:00:25 #5418 [Verbose] > │         let v127 : UH0 = UH0_0(v15, v126)                                    │
00:00:25 #5419 [Verbose] > │         let v128 : UH0 = UH0_0(v14, v127)                                    │
00:00:25 #5420 [Verbose] > │         let v129 : UH0 = UH0_0(v13, v128)                                    │
00:00:25 #5421 [Verbose] > │         let v130 : UH0 = UH0_0(v12, v129)                                    │
00:00:25 #5422 [Verbose] > │         let v131 : UH0 = UH0_0(v11, v130)                                    │
00:00:25 #5423 [Verbose] > │         let v132 : UH0 = UH0_0(v10, v131)                                    │
00:00:25 #5424 [Verbose] > │         let v133 : UH0 = UH0_0(v9, v132)                                     │
00:00:25 #5425 [Verbose] > │         let v134 : UH0 = UH0_0(v8, v133)                                     │
00:00:25 #5426 [Verbose] > │         let v135 : UH0 = UH0_0(v7, v134)                                     │
00:00:25 #5427 [Verbose] > │         let v136 : UH0 = UH0_0(v6, v135)                                     │
00:00:25 #5428 [Verbose] > │         let v137 : UH0 = UH0_0(v5, v136)                                     │
00:00:25 #5429 [Verbose] > │         let v138 : (float []) = method2(v137)                                │
00:00:25 #5430 [Verbose] > │         let v139 : float = 0.0                                               │
00:00:25 #5431 [Verbose] > │         let v140 : float = 0.0007224452478461068                             │
00:00:25 #5432 [Verbose] > │         let v141 : float = 0.0014297283919934465                             │
00:00:25 #5433 [Verbose] > │         let v142 : float = 0.0021070055388626454                             │
00:00:25 #5434 [Verbose] > │         let v143 : float = 0.00274006253677335                               │
00:00:25 #5435 [Verbose] > │         let v144 : float = 0.0033156132912039757                             │
00:00:25 #5436 [Verbose] > │         let v145 : float = 0.0038215786027292415                             │
00:00:25 #5437 [Verbose] > │         let v146 : float = 0.004247339675607605                              │
00:00:25 #5438 [Verbose] > │         let v147 : float = 0.004583960976582912                              │
00:00:25 #5439 [Verbose] > │         let v148 : float = 0.004824377766717757                              │
00:00:25 #5440 [Verbose] > │         let v149 : float = 0.00496354437049027                               │
00:00:25 #5441 [Verbose] > │         let v150 : float = 0.004998540070400965                              │
00:00:25 #5442 [Verbose] > │         let v151 : float = 0.004928630404658255                              │
00:00:25 #5443 [Verbose] > │         let v152 : float = 0.004755282581475768                              │
00:00:25 #5444 [Verbose] > │         let v153 : float = 0.004482134686478519                              │
00:00:25 #5445 [Verbose] > │         let v154 : float = 0.0041149193294682815                             │
00:00:25 #5446 [Verbose] > │         let v155 : float = 0.0036613433329888666                             │
00:00:25 #5447 [Verbose] > │         let v156 : float = 0.0031309259876915697                             │
00:00:25 #5448 [Verbose] > │         let v157 : float = 0.002534799269067951                              │
00:00:25 #5449 [Verbose] > │         let v158 : float = 0.0018854742084416015                             │
00:00:25 #5450 [Verbose] > │         let v159 : float = 0.0011965783214377905                             │
00:00:25 #5451 [Verbose] > │         let v160 : float = 0.00048256960457257535                            │
00:00:25 #5452 [Verbose] > │         let v161 : float = -0.00024156689762753317                           │
00:00:25 #5453 [Verbose] > │         let v162 : float = -0.0009606335867685418                            │
00:00:25 #5454 [Verbose] > │         let v163 : float = -0.001659539265642642                             │
00:00:25 #5455 [Verbose] > │         let v164 : float = -0.002323615860218842                             │
00:00:25 #5456 [Verbose] > │         let v165 : float = -0.0029389262614623636                            │
00:00:25 #5457 [Verbose] > │         let v166 : float = -0.003492556826244686                             │
00:00:25 #5458 [Verbose] > │         let v167 : float = -0.003972888398568771                             │
00:00:25 #5459 [Verbose] > │         let v168 : float = -0.00436984016313259                              │
00:00:25 #5460 [Verbose] > │         let v169 : float = -0.004675081213427074                             │
00:00:25 #5461 [Verbose] > │         let v170 : float = -0.004882205394146359                             │
00:00:25 #5462 [Verbose] > │         let v171 : float = -0.004986865748457456                             │
00:00:25 #5463 [Verbose] > │         let v172 : float = -0.004986865748457456                             │
00:00:25 #5464 [Verbose] > │         let v173 : float = -0.004882205394146361                             │
00:00:25 #5465 [Verbose] > │         let v174 : float = -0.004675081213427074                             │
00:00:25 #5466 [Verbose] > │         let v175 : float = -0.004369840163132589                             │
00:00:25 #5467 [Verbose] > │         let v176 : float = -0.003972888398568774                             │
00:00:25 #5468 [Verbose] > │         let v177 : float = -0.0034925568262446837                            │
00:00:25 #5469 [Verbose] > │         let v178 : float = -0.002938926261462367                             │
00:00:25 #5470 [Verbose] > │         let v179 : float = -0.002323615860218846                             │
00:00:25 #5471 [Verbose] > │         let v180 : float = -0.0016595392656426435                            │
00:00:25 #5472 [Verbose] > │         let v181 : float = -0.0009606335867685414                            │
00:00:25 #5473 [Verbose] > │         let v182 : float = -0.00024156689762753724                           │
00:00:25 #5474 [Verbose] > │         let v183 : float = 0.0004825696045725713                             │
00:00:25 #5475 [Verbose] > │         let v184 : float = 0.0011965783214377866                             │
00:00:25 #5476 [Verbose] > │         let v185 : float = 0.0018854742084416021                             │
00:00:25 #5477 [Verbose] > │         let v186 : float = 0.002534799269067954                              │
00:00:25 #5478 [Verbose] > │         let v187 : float = 0.003130925987691568                              │
00:00:25 #5479 [Verbose] > │         let v188 : float = 0.0036613433329888622                             │
00:00:25 #5480 [Verbose] > │         let v189 : float = 0.0041149193294682815                             │
00:00:25 #5481 [Verbose] > │         let v190 : float = 0.0044821346864785195                             │
00:00:25 #5482 [Verbose] > │         let v191 : float = 0.004755282581475766                              │
00:00:25 #5483 [Verbose] > │         let v192 : float = 0.004928630404658255                              │
00:00:25 #5484 [Verbose] > │         let v193 : float = 0.004998540070400965                              │
00:00:25 #5485 [Verbose] > │         let v194 : float = 0.004963544370490271                              │
00:00:25 #5486 [Verbose] > │         let v195 : float = 0.004824377766717758                              │
00:00:25 #5487 [Verbose] > │         let v196 : float = 0.004583960976582912                              │
00:00:25 #5488 [Verbose] > │         let v197 : float = 0.004247339675607605                              │
00:00:25 #5489 [Verbose] > │         let v198 : float = 0.003821578602729245                              │
00:00:25 #5490 [Verbose] > │         let v199 : float = 0.0033156132912039783                             │
00:00:25 #5491 [Verbose] > │         let v200 : float = 0.0027400625367733585                             │
00:00:25 #5492 [Verbose] > │         let v201 : float = 0.0021070055388626528                             │
00:00:25 #5493 [Verbose] > │         let v202 : float = 0.001429728391993452                              │
00:00:25 #5494 [Verbose] > │         let v203 : float = 0.0007224452478461016                             │
00:00:25 #5495 [Verbose] > │         let v204 : float = 0.0                                               │
00:00:25 #5496 [Verbose] > │         let v205 : UH0 = UH0_1                                               │
00:00:25 #5497 [Verbose] > │         let v206 : UH0 = UH0_0(v204, v205)                                   │
00:00:25 #5498 [Verbose] > │         let v207 : UH0 = UH0_0(v203, v206)                                   │
00:00:25 #5499 [Verbose] > │         let v208 : UH0 = UH0_0(v202, v207)                                   │
00:00:25 #5500 [Verbose] > │         let v209 : UH0 = UH0_0(v201, v208)                                   │
00:00:25 #5501 [Verbose] > │         let v210 : UH0 = UH0_0(v200, v209)                                   │
00:00:25 #5502 [Verbose] > │         let v211 : UH0 = UH0_0(v199, v210)                                   │
00:00:25 #5503 [Verbose] > │         let v212 : UH0 = UH0_0(v198, v211)                                   │
00:00:25 #5504 [Verbose] > │         let v213 : UH0 = UH0_0(v197, v212)                                   │
00:00:25 #5505 [Verbose] > │         let v214 : UH0 = UH0_0(v196, v213)                                   │
00:00:25 #5506 [Verbose] > │         let v215 : UH0 = UH0_0(v195, v214)                                   │
00:00:25 #5507 [Verbose] > │         let v216 : UH0 = UH0_0(v194, v215)                                   │
00:00:25 #5508 [Verbose] > │         let v217 : UH0 = UH0_0(v193, v216)                                   │
00:00:25 #5509 [Verbose] > │         let v218 : UH0 = UH0_0(v192, v217)                                   │
00:00:25 #5510 [Verbose] > │         let v219 : UH0 = UH0_0(v191, v218)                                   │
00:00:25 #5511 [Verbose] > │         let v220 : UH0 = UH0_0(v190, v219)                                   │
00:00:25 #5512 [Verbose] > │         let v221 : UH0 = UH0_0(v189, v220)                                   │
00:00:25 #5513 [Verbose] > │         let v222 : UH0 = UH0_0(v188, v221)                                   │
00:00:25 #5514 [Verbose] > │         let v223 : UH0 = UH0_0(v187, v222)                                   │
00:00:25 #5515 [Verbose] > │         let v224 : UH0 = UH0_0(v186, v223)                                   │
00:00:25 #5516 [Verbose] > │         let v225 : UH0 = UH0_0(v185, v224)                                   │
00:00:25 #5517 [Verbose] > │         let v226 : UH0 = UH0_0(v184, v225)                                   │
00:00:25 #5518 [Verbose] > │         let v227 : UH0 = UH0_0(v183, v226)                                   │
00:00:25 #5519 [Verbose] > │         let v228 : UH0 = UH0_0(v182, v227)                                   │
00:00:25 #5520 [Verbose] > │         let v229 : UH0 = UH0_0(v181, v228)                                   │
00:00:25 #5521 [Verbose] > │         let v230 : UH0 = UH0_0(v180, v229)                                   │
00:00:25 #5522 [Verbose] > │         let v231 : UH0 = UH0_0(v179, v230)                                   │
00:00:25 #5523 [Verbose] > │         let v232 : UH0 = UH0_0(v178, v231)                                   │
00:00:25 #5524 [Verbose] > │         let v233 : UH0 = UH0_0(v177, v232)                                   │
00:00:25 #5525 [Verbose] > │         let v234 : UH0 = UH0_0(v176, v233)                                   │
00:00:25 #5526 [Verbose] > │         let v235 : UH0 = UH0_0(v175, v234)                                   │
00:00:25 #5527 [Verbose] > │         let v236 : UH0 = UH0_0(v174, v235)                                   │
00:00:25 #5528 [Verbose] > │         let v237 : UH0 = UH0_0(v173, v236)                                   │
00:00:25 #5529 [Verbose] > │         let v238 : UH0 = UH0_0(v172, v237)                                   │
00:00:25 #5530 [Verbose] > │         let v239 : UH0 = UH0_0(v171, v238)                                   │
00:00:25 #5531 [Verbose] > │         let v240 : UH0 = UH0_0(v170, v239)                                   │
00:00:25 #5532 [Verbose] > │         let v241 : UH0 = UH0_0(v169, v240)                                   │
00:00:25 #5533 [Verbose] > │         let v242 : UH0 = UH0_0(v168, v241)                                   │
00:00:25 #5534 [Verbose] > │         let v243 : UH0 = UH0_0(v167, v242)                                   │
00:00:25 #5535 [Verbose] > │         let v244 : UH0 = UH0_0(v166, v243)                                   │
00:00:25 #5536 [Verbose] > │         let v245 : UH0 = UH0_0(v165, v244)                                   │
00:00:25 #5537 [Verbose] > │         let v246 : UH0 = UH0_0(v164, v245)                                   │
00:00:25 #5538 [Verbose] > │         let v247 : UH0 = UH0_0(v163, v246)                                   │
00:00:25 #5539 [Verbose] > │         let v248 : UH0 = UH0_0(v162, v247)                                   │
00:00:25 #5540 [Verbose] > │         let v249 : UH0 = UH0_0(v161, v248)                                   │
00:00:25 #5541 [Verbose] > │         let v250 : UH0 = UH0_0(v160, v249)                                   │
00:00:25 #5542 [Verbose] > │         let v251 : UH0 = UH0_0(v159, v250)                                   │
00:00:25 #5543 [Verbose] > │         let v252 : UH0 = UH0_0(v158, v251)                                   │
00:00:25 #5544 [Verbose] > │         let v253 : UH0 = UH0_0(v157, v252)                                   │
00:00:25 #5545 [Verbose] > │         let v254 : UH0 = UH0_0(v156, v253)                                   │
00:00:25 #5546 [Verbose] > │         let v255 : UH0 = UH0_0(v155, v254)                                   │
00:00:25 #5547 [Verbose] > │         let v256 : UH0 = UH0_0(v154, v255)                                   │
00:00:25 #5548 [Verbose] > │         let v257 : UH0 = UH0_0(v153, v256)                                   │
00:00:25 #5549 [Verbose] > │         let v258 : UH0 = UH0_0(v152, v257)                                   │
00:00:25 #5550 [Verbose] > │         let v259 : UH0 = UH0_0(v151, v258)                                   │
00:00:25 #5551 [Verbose] > │         let v260 : UH0 = UH0_0(v150, v259)                                   │
00:00:25 #5552 [Verbose] > │         let v261 : UH0 = UH0_0(v149, v260)                                   │
00:00:25 #5553 [Verbose] > │         let v262 : UH0 = UH0_0(v148, v261)                                   │
00:00:25 #5554 [Verbose] > │         let v263 : UH0 = UH0_0(v147, v262)                                   │
00:00:25 #5555 [Verbose] > │         let v264 : UH0 = UH0_0(v146, v263)                                   │
00:00:25 #5556 [Verbose] > │         let v265 : UH0 = UH0_0(v145, v264)                                   │
00:00:25 #5557 [Verbose] > │         let v266 : UH0 = UH0_0(v144, v265)                                   │
00:00:25 #5558 [Verbose] > │         let v267 : UH0 = UH0_0(v143, v266)                                   │
00:00:25 #5559 [Verbose] > │         let v268 : UH0 = UH0_0(v142, v267)                                   │
00:00:25 #5560 [Verbose] > │         let v269 : UH0 = UH0_0(v141, v268)                                   │
00:00:25 #5561 [Verbose] > │         let v270 : UH0 = UH0_0(v140, v269)                                   │
00:00:25 #5562 [Verbose] > │         let v271 : UH0 = UH0_0(v139, v270)                                   │
00:00:25 #5563 [Verbose] > │         let v272 : (float []) = method2(v271)                                │
00:00:25 #5564 [Verbose] > │         UH1_0(v138, v272, v4)                                                │
00:00:25 #5565 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:00:25 #5566 [Verbose] > │         v1                                                                   │
00:00:25 #5567 [Verbose] > │ and method6 (v0 : UH1, v1 : int32) : int32 =                                 │
00:00:25 #5568 [Verbose] > │     match v0 with                                                            │
00:00:25 #5569 [Verbose] > │     | UH1_0(v2, v3, v4) -> (* Cons *)                                        │
00:00:25 #5570 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:00:25 #5571 [Verbose] > │         method6(v4, v5)                                                      │
00:00:25 #5572 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:25 #5573 [Verbose] > │         v1                                                                   │
00:00:25 #5574 [Verbose] > │ and method7 (v0 : (struct ((float []) * (float [])) []), v1 : UH1, v2 :      │
00:00:25 #5575 [Verbose] > │ int32) : int32 =                                                             │
00:00:25 #5576 [Verbose] > │     match v1 with                                                            │
00:00:25 #5577 [Verbose] > │     | UH1_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:25 #5578 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:00:25 #5579 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:00:25 #5580 [Verbose] > │         method7(v0, v5, v6)                                                  │
00:00:25 #5581 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:00:25 #5582 [Verbose] > │         v2                                                                   │
00:00:25 #5583 [Verbose] > │ and method5 (v0 : UH1) : (struct ((float []) * (float [])) []) =             │
00:00:25 #5584 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:25 #5585 [Verbose] > │     let v2 : int32 = method6(v0, v1)                                         │
00:00:25 #5586 [Verbose] > │     let v3 : (struct ((float []) * (float [])) []) = Array.zeroCreate<struct │
00:00:25 #5587 [Verbose] > │ ((float []) * (float []))> (v2)                                              │
00:00:25 #5588 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:25 #5589 [Verbose] > │     let v5 : int32 = method7(v3, v0, v4)                                     │
00:00:25 #5590 [Verbose] > │     v3                                                                       │
00:00:25 #5591 [Verbose] > │ and method8 (v0 : (struct (string * (float []) * (float [])) [])) : (struct  │
00:00:25 #5592 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:25 #5593 [Verbose] > │     v0                                                                       │
00:00:25 #5594 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:25 #5595 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:25 #5596 [Verbose] > │     let v0 : float = 0.0                                                     │
00:00:25 #5597 [Verbose] > │     let v1 : float = 1.0                                                     │
00:00:25 #5598 [Verbose] > │     let v2 : float = 2.0                                                     │
00:00:25 #5599 [Verbose] > │     let v3 : float = 3.0                                                     │
00:00:25 #5600 [Verbose] > │     let v4 : float = 4.0                                                     │
00:00:25 #5601 [Verbose] > │     let v5 : float = 5.0                                                     │
00:00:25 #5602 [Verbose] > │     let v6 : float = 6.0                                                     │
00:00:25 #5603 [Verbose] > │     let v7 : float = 7.0                                                     │
00:00:25 #5604 [Verbose] > │     let v8 : float = 8.0                                                     │
00:00:25 #5605 [Verbose] > │     let v9 : float = 9.0                                                     │
00:00:25 #5606 [Verbose] > │     let v10 : UH0 = UH0_1                                                    │
00:00:25 #5607 [Verbose] > │     let v11 : UH0 = UH0_0(v9, v10)                                           │
00:00:25 #5608 [Verbose] > │     let v12 : UH0 = UH0_0(v8, v11)                                           │
00:00:25 #5609 [Verbose] > │     let v13 : UH0 = UH0_0(v7, v12)                                           │
00:00:25 #5610 [Verbose] > │     let v14 : UH0 = UH0_0(v6, v13)                                           │
00:00:25 #5611 [Verbose] > │     let v15 : UH0 = UH0_0(v5, v14)                                           │
00:00:25 #5612 [Verbose] > │     let v16 : UH0 = UH0_0(v4, v15)                                           │
00:00:25 #5613 [Verbose] > │     let v17 : UH0 = UH0_0(v3, v16)                                           │
00:00:25 #5614 [Verbose] > │     let v18 : UH0 = UH0_0(v2, v17)                                           │
00:00:25 #5615 [Verbose] > │     let v19 : UH0 = UH0_0(v1, v18)                                           │
00:00:25 #5616 [Verbose] > │     let v20 : UH0 = UH0_0(v0, v19)                                           │
00:00:25 #5617 [Verbose] > │     let v21 : UH1 = UH1_1                                                    │
00:00:25 #5618 [Verbose] > │     let v22 : UH1 = method1(v20, v21)                                        │
00:00:25 #5619 [Verbose] > │     let v23 : (struct ((float []) * (float [])) []) = method5(v22)           │
00:00:25 #5620 [Verbose] > │     let struct (v24 : (float []), v25 : (float [])) = v23.[int 0]            │
00:00:25 #5621 [Verbose] > │     let v26 : string = $"{0}"                                                │
00:00:25 #5622 [Verbose] > │     let v27 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:25 #5623 [Verbose] > │ (v26, v24, v25)|]                                                            │
00:00:25 #5624 [Verbose] > │     let v28 : (struct (string * (float []) * (float [])) []) = method8(v27)  │
00:00:25 #5625 [Verbose] > │     let v29 : string = "wave"                                                │
00:00:25 #5626 [Verbose] > │     let v30 : string = "position (m)"                                        │
00:00:25 #5627 [Verbose] > │     let v31 : string = "displacement (m)"                                    │
00:00:25 #5628 [Verbose] > │     struct (v29, v30, v31, v28)                                              │
00:00:25 #5629 [Verbose] > │ method0()                                                                    │
00:00:25 #5630 [Verbose] > │                                                                              │
00:00:25 #5631 [Verbose] > │                                                                              │
00:00:25 #5632 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #5633 [Verbose] >
00:00:25 #5634 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:25 #5635 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:25 #5636 [Verbose] > │ ### system kinetic energy versus time 2                                      │
00:00:25 #5637 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:25 #5638 [Verbose] >
00:00:25 #5639 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:25 #5640 [Verbose] > // // test
00:00:25 #5641 [Verbose] >
00:00:25 #5642 [Verbose] > inl central_force f (particle_state st1) (particle_state st2) =
00:00:25 #5643 [Verbose] >     inl r1 = st1.pos_vec
00:00:25 #5644 [Verbose] >     inl r2 = st2.pos_vec
00:00:25 #5645 [Verbose] >     inl r21 = r2 ^-^ r1
00:00:25 #5646 [Verbose] >     inl r21mag = magnitude r21
00:00:25 #5647 [Verbose] >     f r21mag *^ r21 ^/ r21mag
00:00:25 #5648 [Verbose] >
00:00:25 #5649 [Verbose] > inl billiard_force k re =
00:00:25 #5650 [Verbose] >     inl f r =
00:00:25 #5651 [Verbose] >         if r >= re
00:00:25 #5652 [Verbose] >         then 0
00:00:25 #5653 [Verbose] >         else -k * (r - re)
00:00:25 #5654 [Verbose] >     central_force f
00:00:25 #5655 [Verbose] >
00:00:25 #5656 [Verbose] > type force_vector = vec
00:00:25 #5657 [Verbose] > type two_body_force = particle_state -> particle_state -> force_vector
00:00:25 #5658 [Verbose] >
00:00:25 #5659 [Verbose] > union force t =
00:00:25 #5660 [Verbose] >     | ExternalForce : t * one_body_force
00:00:25 #5661 [Verbose] >     | InternalForce : t * t * two_body_force
00:00:25 #5662 [Verbose] >
00:00:25 #5663 [Verbose] > nominal multi_particle_state = stream.stream particle_state
00:00:25 #5664 [Verbose] >
00:00:25 #5665 [Verbose] > nominal d_multi_particle_state = stream.stream d_particle_state
00:00:25 #5666 [Verbose] >
00:00:25 #5667 [Verbose] > inl force_on n s force =
00:00:25 #5668 [Verbose] >     match force with
00:00:25 #5669 [Verbose] >     | ExternalForce (n0, f_one_body) =>
00:00:25 #5670 [Verbose] >         if n = n0
00:00:25 #5671 [Verbose] >         then f_one_body
00:00:25 #5672 [Verbose] >         else fun _ => zero_vec ()
00:00:25 #5673 [Verbose] >     | InternalForce (n0, n1, f_two_body) =>
00:00:25 #5674 [Verbose] >         if n = n0
00:00:25 #5675 [Verbose] >         then s |> stream.try_item n1 |> optionm.map f_two_body
00:00:25 #5676 [Verbose] >         elif n = n1
00:00:25 #5677 [Verbose] >         then s |> stream.try_item n0 |> optionm.map f_two_body
00:00:25 #5678 [Verbose] >         else None
00:00:25 #5679 [Verbose] >         |> optionm'.default_value (fun _ => zero_vec ())
00:00:25 #5680 [Verbose] >
00:00:25 #5681 [Verbose] > inl forces_on n (multi_particle_state sts) fs =
00:00:25 #5682 [Verbose] >     fs
00:00:25 #5683 [Verbose] >     |> listm.map (force_on n sts)
00:00:25 #5684 [Verbose] >
00:00:25 #5685 [Verbose] > inl newton_second_mps fs ((multi_particle_state sts) as mpst) =
00:00:25 #5686 [Verbose] >     inl deriv (n, st) =
00:00:25 #5687 [Verbose] >         newton_second_ps (forces_on n mpst fs) st
00:00:25 #5688 [Verbose] >     sts |> stream.indexed |> stream.map deriv |> d_multi_particle_state
00:00:25 #5689 [Verbose] >
00:00:25 #5690 [Verbose] > instance (+++) d_multi_particle_state =
00:00:25 #5691 [Verbose] >     fun (d_multi_particle_state dsts1) (d_multi_particle_state dsts2) =>
00:00:25 #5692 [Verbose] >         (dsts1, dsts2)
00:00:25 #5693 [Verbose] >         ||> stream.zip_with (+++)
00:00:25 #5694 [Verbose] >         |> d_multi_particle_state
00:00:25 #5695 [Verbose] >
00:00:25 #5696 [Verbose] > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:00:25 #5697 [Verbose] >     dsts
00:00:25 #5698 [Verbose] >     |> stream.map (scale w)
00:00:25 #5699 [Verbose] >     |> d_multi_particle_state
00:00:25 #5700 [Verbose] >
00:00:25 #5701 [Verbose] > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:00:25 #5702 [Verbose] >     inl (d_multi_particle_state dsts) =
00:00:25 #5703 [Verbose] >         real
00:00:25 #5704 [Verbose] >             match dsts with
00:00:25 #5705 [Verbose] >             | d_multi_particle_state _ => dsts
00:00:25 #5706 [Verbose] >     (dsts, sts)
00:00:25 #5707 [Verbose] >     ||> stream.zip_with (shift dt)
00:00:25 #5708 [Verbose] >     |> stream.memoize
00:00:25 #5709 [Verbose] >     |> fun x => x ()
00:00:25 #5710 [Verbose] >     |> multi_particle_state
00:00:25 #5711 [Verbose] >
00:00:25 #5712 [Verbose] > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:00:25 #5713 [Verbose] > d_multi_particle_state =
00:00:25 #5714 [Verbose] >     fun deriv ((multi_particle_state sts0) as mpst0) =>
00:00:25 #5715 [Verbose] >         inl (multi_particle_state sts1) = euler dt deriv mpst0
00:00:25 #5716 [Verbose] >         (sts0, sts1)
00:00:25 #5717 [Verbose] >         ||> stream.zip
00:00:25 #5718 [Verbose] >         |> stream.map (fun ((particle_state st0), (particle_state st1)) =>
00:00:25 #5719 [Verbose] >             particle_state {
00:00:25 #5720 [Verbose] >                 st1 with
00:00:25 #5721 [Verbose] >                     pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:00:25 #5722 [Verbose] >             }
00:00:25 #5723 [Verbose] >         )
00:00:25 #5724 [Verbose] >         |> multi_particle_state
00:00:25 #5725 [Verbose] >
00:00:25 #5726 [Verbose] > inl update_mps (method : numerical_method multi_particle_state
00:00:25 #5727 [Verbose] > d_multi_particle_state) =
00:00:25 #5728 [Verbose] >     newton_second_mps >> method
00:00:25 #5729 [Verbose] >
00:00:25 #5730 [Verbose] > inl states_mps (method : numerical_method multi_particle_state
00:00:25 #5731 [Verbose] > d_multi_particle_state) =
00:00:25 #5732 [Verbose] >     newton_second_mps
00:00:25 #5733 [Verbose] >     >> method
00:00:25 #5734 [Verbose] >     >> (fun x (multi_particle_state y) =>
00:00:25 #5735 [Verbose] >         y
00:00:25 #5736 [Verbose] >         |> stream.memoize
00:00:25 #5737 [Verbose] >         |> (fun x => x ())
00:00:25 #5738 [Verbose] >         |> multi_particle_state |> x
00:00:25 #5739 [Verbose] >     )
00:00:25 #5740 [Verbose] >     // >> stream.iterate
00:00:25 #5741 [Verbose] >     >> seq.iterate'
00:00:25 #5742 [Verbose] >
00:00:25 #5743 [Verbose] > inl kinetic_energy (particle_state st) =
00:00:25 #5744 [Verbose] >     inl m = st.mass
00:00:25 #5745 [Verbose] >     inl v = magnitude st.velocity
00:00:25 #5746 [Verbose] >     0.5 * m * v ** 2
00:00:25 #5747 [Verbose] >
00:00:25 #5748 [Verbose] > inl system_ke (multi_particle_state sts) =
00:00:25 #5749 [Verbose] >     sts
00:00:25 #5750 [Verbose] >     |> stream.map kinetic_energy
00:00:25 #5751 [Verbose] >     |> stream.sum
00:00:25 #5752 [Verbose] >
00:00:25 #5753 [Verbose] > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:00:25 #5754 [Verbose] >     inl r1 = st1.pos_vec
00:00:25 #5755 [Verbose] >     inl r2 = st2.pos_vec
00:00:25 #5756 [Verbose] >     inl r21 = r2 ^-^ r1
00:00:25 #5757 [Verbose] >     inl r21mag = magnitude r21
00:00:25 #5758 [Verbose] >     k * (r21mag - re) ** 2 / 2
00:00:25 #5759 [Verbose] >
00:00:25 #5760 [Verbose] > inl earth_surface_gravity_pe (particle_state st) =
00:00:25 #5761 [Verbose] >     inl g = 9.80665
00:00:25 #5762 [Verbose] >     inl m = st.mass
00:00:25 #5763 [Verbose] >     inl z = st.pos_vec.z
00:00:25 #5764 [Verbose] >     m * g * z
00:00:25 #5765 [Verbose] >
00:00:25 #5766 [Verbose] > inl ball_radius () = 0.03
00:00:25 #5767 [Verbose] >
00:00:25 #5768 [Verbose] > inl billiard_forces k =
00:00:25 #5769 [Verbose] >     [[ InternalForce (0i32, 1, billiard_force k (2 * ball_radius ())) ]]
00:00:25 #5770 [Verbose] >
00:00:25 #5771 [Verbose] > inl billiard_initial () =
00:00:25 #5772 [Verbose] >     inl ball_mass = 0.160
00:00:25 #5773 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:25 #5774 [Verbose] >     [[
00:00:25 #5775 [Verbose] >         particle_state {
00:00:25 #5776 [Verbose] >             default_particle_state' with
00:00:25 #5777 [Verbose] >                 mass = ball_mass
00:00:25 #5778 [Verbose] >                 pos_vec = zero_vec ()
00:00:25 #5779 [Verbose] >                 velocity = 0.2 *^ i_hat ()
00:00:25 #5780 [Verbose] >         }
00:00:25 #5781 [Verbose] >         particle_state {
00:00:25 #5782 [Verbose] >             default_particle_state' with
00:00:25 #5783 [Verbose] >                 mass = ball_mass
00:00:25 #5784 [Verbose] >                 pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:00:25 #5785 [Verbose] >                 velocity = zero_vec ()
00:00:25 #5786 [Verbose] >         }
00:00:25 #5787 [Verbose] >     ]]
00:00:25 #5788 [Verbose] >     |> stream.from_list
00:00:25 #5789 [Verbose] >     |> multi_particle_state
00:00:25 #5790 [Verbose] >
00:00:25 #5791 [Verbose] > inl billiard_states ~n_method k dt =
00:00:25 #5792 [Verbose] >     states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:00:25 #5793 [Verbose] >
00:00:25 #5794 [Verbose] > inl billiard_states_finite n_method k dt =
00:00:25 #5795 [Verbose] >     billiard_states n_method k dt
00:00:25 #5796 [Verbose] >     >> Some
00:00:25 #5797 [Verbose] >     |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:00:25 #5798 [Verbose] >         match mpst |> stream.try_item 0i32 with
00:00:25 #5799 [Verbose] >         | Some st =>
00:00:25 #5800 [Verbose] >             st.time <= 10
00:00:25 #5801 [Verbose] >         | None => false
00:00:25 #5802 [Verbose] >     )
00:00:25 #5803 [Verbose] >
00:00:25 #5804 [Verbose] > inl momentum (particle_state st) =
00:00:25 #5805 [Verbose] >     inl m = st.mass
00:00:25 #5806 [Verbose] >     inl v = st.velocity
00:00:25 #5807 [Verbose] >     m *^ v
00:00:25 #5808 [Verbose] >
00:00:25 #5809 [Verbose] > inl system_p (multi_particle_state sts) =
00:00:25 #5810 [Verbose] >     sts
00:00:25 #5811 [Verbose] >     |> stream.map momentum
00:00:25 #5812 [Verbose] >     |> stream.fold (^+^) (zero_vec ())
00:00:25 #5813 [Verbose] >
00:00:25 #5814 [Verbose] > inl time_ke_ec_x, time_ke_ec_y =
00:00:25 #5815 [Verbose] >     billiard_states_finite euler_cromer_mps 30 0.03
00:00:25 #5816 [Verbose] >     |> listm.map (fun (multi_particle_state mpst) =>
00:00:25 #5817 [Verbose] >         mpst |> stream.try_item 0i32
00:00:25 #5818 [Verbose] >         |> optionm.map (fun st =>
00:00:25 #5819 [Verbose] >             st.time, system_ke (multi_particle_state mpst)
00:00:25 #5820 [Verbose] >         )
00:00:25 #5821 [Verbose] >     )
00:00:25 #5822 [Verbose] >     // |> stream.to_list
00:00:25 #5823 [Verbose] >     |> listm'.choose id
00:00:25 #5824 [Verbose] >     |> listm'.unzip
00:00:25 #5825 [Verbose] >
00:00:25 #5826 [Verbose] > inl time_ke_rk4_x, time_ke_rk4_y =
00:00:25 #5827 [Verbose] >     billiard_states_finite runge_kutta_4 30 0.03
00:00:25 #5828 [Verbose] >     |> listm.map (fun (multi_particle_state mpst) =>
00:00:25 #5829 [Verbose] >         mpst |> stream.try_item 0i32
00:00:25 #5830 [Verbose] >         |> optionm.map (fun st =>
00:00:25 #5831 [Verbose] >             st.time, system_ke (multi_particle_state mpst)
00:00:25 #5832 [Verbose] >         )
00:00:25 #5833 [Verbose] >     )
00:00:25 #5834 [Verbose] >     // |> stream.to_list
00:00:25 #5835 [Verbose] >     |> listm'.choose id
00:00:25 #5836 [Verbose] >     |> listm'.unzip
00:00:25 #5837 [Verbose] >
00:00:25 #5838 [Verbose] > inl time_ke_ec_x : a i32 _ = time_ke_ec_x |> listm.toArray
00:00:25 #5839 [Verbose] > inl time_ke_ec_y : a i32 _ = time_ke_ec_y |> listm.toArray
00:00:25 #5840 [Verbose] >
00:00:25 #5841 [Verbose] > inl time_ke_rk4_x : a i32 _ = time_ke_rk4_x |> listm.toArray
00:00:25 #5842 [Verbose] > inl time_ke_rk4_y : a i32 _ = time_ke_rk4_y |> listm.toArray
00:00:25 #5843 [Verbose] >
00:00:25 #5844 [Verbose] > "system kinetic energy versus time",
00:00:25 #5845 [Verbose] > "time (s)",
00:00:25 #5846 [Verbose] > "system kinetic energy (j)",
00:00:25 #5847 [Verbose] > ;[[
00:00:25 #5848 [Verbose] >     "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:00:25 #5849 [Verbose] >     "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:00:25 #5850 [Verbose] > ]]
00:00:25 #5851 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-1941-4185-4facf700c188/main.spi
00:00:27 #5852 [Verbose] >
00:00:27 #5853 [Verbose] > ╭─[ 1.46s - return value ]─────────────────────────────────────────────────────╮
00:00:27 #5854 [Verbose] > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:00:27 #5855 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:27 #5856 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:27 #5857 [Verbose] > │ stroke="none"/>                                                              │
00:00:27 #5858 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:27 #5859 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:27 #5860 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:27 #5861 [Verbose] > │ system kinetic energy versus time                                            │
00:00:27 #5862 [Verbose] > │ </text>                                                                      │
00:00:27 #5863 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:00:27 #5864 [Verbose] > │ y2="75"/>                                                                    │
00:00:27 #5865 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:27 #5866 [Verbose] > │ y2="75"/>                                                                    │
00:00:27 #5867 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:00:27 #5868 [Verbose] > │ y2="75"/>                                                                    │
00:00:27 #5869 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:00:27 #5870 [Verbose] > │ y2="75"/>                                                                    │
00:00:27 #5871 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1...                        │
00:00:27 #5872 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 #5873 [Verbose] >
00:00:27 #5874 [Verbose] > ╭─[ 1.47s - stdout ]───────────────────────────────────────────────────────────╮
00:00:27 #5875 [Verbose] > │ type UH0 =                                                                   │
00:00:27 #5876 [Verbose] > │     | UH0_0 of float * float * float * float * float * float * float * float │
00:00:27 #5877 [Verbose] > │ * float * (unit -> UH0)                                                      │
00:00:27 #5878 [Verbose] > │     | UH0_1                                                                  │
00:00:27 #5879 [Verbose] > │ and UH1 =                                                                    │
00:00:27 #5880 [Verbose] > │     | UH1_0 of float * float * float * float * float * float * float * float │
00:00:27 #5881 [Verbose] > │ * float * (unit -> UH1)                                                      │
00:00:27 #5882 [Verbose] > │     | UH1_1                                                                  │
00:00:27 #5883 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:27 #5884 [Verbose] > │     | US0_0 of f0_0 : UH0                                                    │
00:00:27 #5885 [Verbose] > │     | US0_1 of f1_0 : (unit -> UH0)                                          │
00:00:27 #5886 [Verbose] > │ and Mut0 = {mutable l0 : US0}                                                │
00:00:27 #5887 [Verbose] > │ and UH2 =                                                                    │
00:00:27 #5888 [Verbose] > │     | UH2_0 of float * float * float * float * float * float * float * float │
00:00:27 #5889 [Verbose] > │ * float * float * float * float * float * float * float * float * float *    │
00:00:27 #5890 [Verbose] > │ float * (unit -> UH2)                                                        │
00:00:27 #5891 [Verbose] > │     | UH2_1                                                                  │
00:00:27 #5892 [Verbose] > │ and UH3 =                                                                    │
00:00:27 #5893 [Verbose] > │     | UH3_0 of int32 * float * float * float * float * float * float * float │
00:00:27 #5894 [Verbose] > │ * float * float * (unit -> UH3)                                              │
00:00:27 #5895 [Verbose] > │     | UH3_1                                                                  │
00:00:27 #5896 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:27 #5897 [Verbose] > │     | US1_0                                                                  │
00:00:27 #5898 [Verbose] > │     | US1_1 of f1_0 : (struct (float * float * float * float * float * float │
00:00:27 #5899 [Verbose] > │ * float * float * float) -> struct (float * float * float))                  │
00:00:27 #5900 [Verbose] > │ and [<Struct>] US2 =                                                         │
00:00:27 #5901 [Verbose] > │     | US2_0                                                                  │
00:00:27 #5902 [Verbose] > │     | US2_1 of f1_0 : float * f1_1 : float * f1_2 : float * f1_3 : float *   │
00:00:27 #5903 [Verbose] > │ f1_4 : float * f1_5 : float * f1_6 : float * f1_7 : float * f1_8 : float     │
00:00:27 #5904 [Verbose] > │ and UH4 =                                                                    │
00:00:27 #5905 [Verbose] > │     | UH4_0 of UH0 * UH4                                                     │
00:00:27 #5906 [Verbose] > │     | UH4_1                                                                  │
00:00:27 #5907 [Verbose] > │ and UH5 =                                                                    │
00:00:27 #5908 [Verbose] > │     | UH5_0 of int32 * UH5                                                   │
00:00:27 #5909 [Verbose] > │     | UH5_1                                                                  │
00:00:27 #5910 [Verbose] > │ and [<Struct>] US3 =                                                         │
00:00:27 #5911 [Verbose] > │     | US3_0                                                                  │
00:00:27 #5912 [Verbose] > │     | US3_1 of f1_0 : float * f1_1 : float                                   │
00:00:27 #5913 [Verbose] > │ and UH6 =                                                                    │
00:00:27 #5914 [Verbose] > │     | UH6_0 of US3 * UH6                                                     │
00:00:27 #5915 [Verbose] > │     | UH6_1                                                                  │
00:00:27 #5916 [Verbose] > │ and UH7 =                                                                    │
00:00:27 #5917 [Verbose] > │     | UH7_0 of float * (unit -> UH7)                                         │
00:00:27 #5918 [Verbose] > │     | UH7_1                                                                  │
00:00:27 #5919 [Verbose] > │ and UH8 =                                                                    │
00:00:27 #5920 [Verbose] > │     | UH8_0 of float * float * UH8                                           │
00:00:27 #5921 [Verbose] > │     | UH8_1                                                                  │
00:00:27 #5922 [Verbose] > │ and UH9 =                                                                    │
00:00:27 #5923 [Verbose] > │     | UH9_0 of float * UH9                                                   │
00:00:27 #5924 [Verbose] > │     | UH9_1                                                                  │
00:00:27 #5925 [Verbose] > │ let rec closure3 (v0 : float, v1 : (unit -> UH0), v2 : (unit -> UH1)) () :   │
00:00:27 #5926 [Verbose] > │ UH0 =                                                                        │
00:00:27 #5927 [Verbose] > │     let v3 : UH1 = v2 ()                                                     │
00:00:27 #5928 [Verbose] > │     let v4 : UH0 = v1 ()                                                     │
00:00:27 #5929 [Verbose] > │     match v3 with                                                            │
00:00:27 #5930 [Verbose] > │     | UH1_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (* StreamCons *) │
00:00:27 #5931 [Verbose] > │         match v4 with                                                        │
00:00:27 #5932 [Verbose] > │         | UH0_0(v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) -> (*      │
00:00:27 #5933 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #5934 [Verbose] > │             let v25 : float = v10 * v0                                       │
00:00:27 #5935 [Verbose] > │             let v26 : float = v20 + v25                                      │
00:00:27 #5936 [Verbose] > │             let v27 : float = v0 * v7                                        │
00:00:27 #5937 [Verbose] > │             let v28 : float = v0 * v8                                        │
00:00:27 #5938 [Verbose] > │             let v29 : float = v0 * v9                                        │
00:00:27 #5939 [Verbose] > │             let v30 : float = v17 + v27                                      │
00:00:27 #5940 [Verbose] > │             let v31 : float = v18 + v28                                      │
00:00:27 #5941 [Verbose] > │             let v32 : float = v19 + v29                                      │
00:00:27 #5942 [Verbose] > │             let v33 : float = v0 * v11                                       │
00:00:27 #5943 [Verbose] > │             let v34 : float = v0 * v12                                       │
00:00:27 #5944 [Verbose] > │             let v35 : float = v0 * v13                                       │
00:00:27 #5945 [Verbose] > │             let v36 : float = v21 + v33                                      │
00:00:27 #5946 [Verbose] > │             let v37 : float = v22 + v34                                      │
00:00:27 #5947 [Verbose] > │             let v38 : float = v23 + v35                                      │
00:00:27 #5948 [Verbose] > │             let v39 : (unit -> UH0) = closure3(v0, v24, v14)                 │
00:00:27 #5949 [Verbose] > │             UH0_0(v15, v16, v30, v31, v32, v26, v36, v37, v38, v39)          │
00:00:27 #5950 [Verbose] > │         | UH0_1 -> (* StreamNil *)                                           │
00:00:27 #5951 [Verbose] > │             UH0_1                                                            │
00:00:27 #5952 [Verbose] > │     | UH1_1 -> (* StreamNil *)                                               │
00:00:27 #5953 [Verbose] > │         UH0_1                                                                │
00:00:27 #5954 [Verbose] > │ and closure4 (v0 : UH0) () : UH0 =                                           │
00:00:27 #5955 [Verbose] > │     v0                                                                       │
00:00:27 #5956 [Verbose] > │ and closure5 (v0 : UH0, v1 : Mut0) () : UH0 =                                │
00:00:27 #5957 [Verbose] > │     let v2 : US0 = v1.l0                                                     │
00:00:27 #5958 [Verbose] > │     match v2 with                                                            │
00:00:27 #5959 [Verbose] > │     | US0_0(v3) -> (* Computed *)                                            │
00:00:27 #5960 [Verbose] > │         v3                                                                   │
00:00:27 #5961 [Verbose] > │     | US0_1(v4) -> (* NotComputed *)                                         │
00:00:27 #5962 [Verbose] > │         let v5 : UH0 = v4 ()                                                 │
00:00:27 #5963 [Verbose] > │         let v20 : UH0 =                                                      │
00:00:27 #5964 [Verbose] > │             match v5 with                                                    │
00:00:27 #5965 [Verbose] > │             | UH0_0(v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) -> (*     │
00:00:27 #5966 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #5967 [Verbose] > │                 let v17 : (unit -> UH0) = method1(v0, v16)                   │
00:00:27 #5968 [Verbose] > │                 UH0_0(v7, v8, v9, v10, v11, v12, v13, v14, v15, v17)         │
00:00:27 #5969 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:27 #5970 [Verbose] > │                 UH0_1                                                        │
00:00:27 #5971 [Verbose] > │         let v21 : US0 = US0_0(v20)                                           │
00:00:27 #5972 [Verbose] > │         v1.l0 <- v21                                                         │
00:00:27 #5973 [Verbose] > │         v20                                                                  │
00:00:27 #5974 [Verbose] > │ and method1 (v0 : UH0, v1 : (unit -> UH0)) : (unit -> UH0) =                 │
00:00:27 #5975 [Verbose] > │     let v2 : US0 = US0_1(v1)                                                 │
00:00:27 #5976 [Verbose] > │     let v3 : Mut0 = {l0 = v2} : Mut0                                         │
00:00:27 #5977 [Verbose] > │     closure5(v0, v3)                                                         │
00:00:27 #5978 [Verbose] > │ and closure6 (v0 : (unit -> UH0), v1 : (unit -> UH0)) () : UH2 =             │
00:00:27 #5979 [Verbose] > │     let v2 : UH0 = v1 ()                                                     │
00:00:27 #5980 [Verbose] > │     let v3 : UH0 = v0 ()                                                     │
00:00:27 #5981 [Verbose] > │     match v2 with                                                            │
00:00:27 #5982 [Verbose] > │     | UH0_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *)  │
00:00:27 #5983 [Verbose] > │         match v3 with                                                        │
00:00:27 #5984 [Verbose] > │         | UH0_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (*      │
00:00:27 #5985 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #5986 [Verbose] > │             let v24 : (unit -> UH2) = closure6(v23, v13)                     │
00:00:27 #5987 [Verbose] > │             UH2_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v14, v15, v16, v17, │
00:00:27 #5988 [Verbose] > │ v18, v19, v20, v21, v22, v24)                                                │
00:00:27 #5989 [Verbose] > │         | UH0_1 -> (* StreamNil *)                                           │
00:00:27 #5990 [Verbose] > │             UH2_1                                                            │
00:00:27 #5991 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:27 #5992 [Verbose] > │         UH2_1                                                                │
00:00:27 #5993 [Verbose] > │ and closure7 (v0 : UH0) () : UH0 =                                           │
00:00:27 #5994 [Verbose] > │     v0                                                                       │
00:00:27 #5995 [Verbose] > │ and method2 (v0 : float, v1 : UH2, v2 : UH0) : UH0 =                         │
00:00:27 #5996 [Verbose] > │     match v1 with                                                            │
00:00:27 #5997 [Verbose] > │     | UH2_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16,   │
00:00:27 #5998 [Verbose] > │ v17, v18, v19, v20, v21) -> (* StreamCons *)                                 │
00:00:27 #5999 [Verbose] > │         let v22 : UH2 = v21 ()                                               │
00:00:27 #6000 [Verbose] > │         let v23 : UH0 = method2(v0, v22, v2)                                 │
00:00:27 #6001 [Verbose] > │         let v24 : float = v0 * v18                                           │
00:00:27 #6002 [Verbose] > │         let v25 : float = v0 * v19                                           │
00:00:27 #6003 [Verbose] > │         let v26 : float = v0 * v20                                           │
00:00:27 #6004 [Verbose] > │         let v27 : float = v5 + v24                                           │
00:00:27 #6005 [Verbose] > │         let v28 : float = v6 + v25                                           │
00:00:27 #6006 [Verbose] > │         let v29 : float = v7 + v26                                           │
00:00:27 #6007 [Verbose] > │         let v30 : (unit -> UH0) = closure7(v23)                              │
00:00:27 #6008 [Verbose] > │         UH0_0(v12, v13, v27, v28, v29, v17, v18, v19, v20, v30)              │
00:00:27 #6009 [Verbose] > │     | UH2_1 -> (* StreamNil *)                                               │
00:00:27 #6010 [Verbose] > │         v2                                                                   │
00:00:27 #6011 [Verbose] > │ and closure2 (v0 : float, v1 : (UH0 -> UH1)) (v2 : UH0) : UH0 =              │
00:00:27 #6012 [Verbose] > │     let v3 : UH1 = v1 v2                                                     │
00:00:27 #6013 [Verbose] > │     let v45 : UH0 =                                                          │
00:00:27 #6014 [Verbose] > │         match v3 with                                                        │
00:00:27 #6015 [Verbose] > │         | UH1_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons │
00:00:27 #6016 [Verbose] > │ *)                                                                           │
00:00:27 #6017 [Verbose] > │             match v2 with                                                    │
00:00:27 #6018 [Verbose] > │             | UH0_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (*  │
00:00:27 #6019 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #6020 [Verbose] > │                 let v24 : float = v9 * v0                                    │
00:00:27 #6021 [Verbose] > │                 let v25 : float = v19 + v24                                  │
00:00:27 #6022 [Verbose] > │                 let v26 : float = v0 * v6                                    │
00:00:27 #6023 [Verbose] > │                 let v27 : float = v0 * v7                                    │
00:00:27 #6024 [Verbose] > │                 let v28 : float = v0 * v8                                    │
00:00:27 #6025 [Verbose] > │                 let v29 : float = v16 + v26                                  │
00:00:27 #6026 [Verbose] > │                 let v30 : float = v17 + v27                                  │
00:00:27 #6027 [Verbose] > │                 let v31 : float = v18 + v28                                  │
00:00:27 #6028 [Verbose] > │                 let v32 : float = v0 * v10                                   │
00:00:27 #6029 [Verbose] > │                 let v33 : float = v0 * v11                                   │
00:00:27 #6030 [Verbose] > │                 let v34 : float = v0 * v12                                   │
00:00:27 #6031 [Verbose] > │                 let v35 : float = v20 + v32                                  │
00:00:27 #6032 [Verbose] > │                 let v36 : float = v21 + v33                                  │
00:00:27 #6033 [Verbose] > │                 let v37 : float = v22 + v34                                  │
00:00:27 #6034 [Verbose] > │                 let v38 : (unit -> UH0) = closure3(v0, v23, v13)             │
00:00:27 #6035 [Verbose] > │                 UH0_0(v14, v15, v29, v30, v31, v25, v35, v36, v37, v38)      │
00:00:27 #6036 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:27 #6037 [Verbose] > │                 UH0_1                                                        │
00:00:27 #6038 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6039 [Verbose] > │             UH0_1                                                            │
00:00:27 #6040 [Verbose] > │     let v46 : (unit -> UH0) = closure4(v45)                                  │
00:00:27 #6041 [Verbose] > │     let v47 : (unit -> UH0) = method1(v45, v46)                              │
00:00:27 #6042 [Verbose] > │     let v48 : UH0 = v47 ()                                                   │
00:00:27 #6043 [Verbose] > │     let v76 : UH2 =                                                          │
00:00:27 #6044 [Verbose] > │         match v2 with                                                        │
00:00:27 #6045 [Verbose] > │         | UH0_0(v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) -> (*      │
00:00:27 #6046 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #6047 [Verbose] > │             match v48 with                                                   │
00:00:27 #6048 [Verbose] > │             | UH0_0(v59, v60, v61, v62, v63, v64, v65, v66, v67, v68) -> (*  │
00:00:27 #6049 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #6050 [Verbose] > │                 let v69 : (unit -> UH2) = closure6(v68, v58)                 │
00:00:27 #6051 [Verbose] > │                 UH2_0(v49, v50, v51, v52, v53, v54, v55, v56, v57, v59, v60, │
00:00:27 #6052 [Verbose] > │ v61, v62, v63, v64, v65, v66, v67, v69)                                      │
00:00:27 #6053 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:27 #6054 [Verbose] > │                 UH2_1                                                        │
00:00:27 #6055 [Verbose] > │         | UH0_1 -> (* StreamNil *)                                           │
00:00:27 #6056 [Verbose] > │             UH2_1                                                            │
00:00:27 #6057 [Verbose] > │     let v77 : UH0 = UH0_1                                                    │
00:00:27 #6058 [Verbose] > │     let v78 : UH0 = method2(v0, v76, v77)                                    │
00:00:27 #6059 [Verbose] > │     v78                                                                      │
00:00:27 #6060 [Verbose] > │ and closure1 (v0 : float) (v1 : (UH0 -> UH1)) : (UH0 -> UH0) =               │
00:00:27 #6061 [Verbose] > │     closure2(v0, v1)                                                         │
00:00:27 #6062 [Verbose] > │ and closure0 () (v0 : float) : ((UH0 -> UH1) -> (UH0 -> UH0)) =              │
00:00:27 #6063 [Verbose] > │     closure1(v0)                                                             │
00:00:27 #6064 [Verbose] > │ and closure9 (v0 : UH3) () : UH3 =                                           │
00:00:27 #6065 [Verbose] > │     v0                                                                       │
00:00:27 #6066 [Verbose] > │ and method3 (v0 : UH0, v1 : UH3, v2 : int32) : struct (UH3 * int32) =        │
00:00:27 #6067 [Verbose] > │     match v0 with                                                            │
00:00:27 #6068 [Verbose] > │     | UH0_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons *)   │
00:00:27 #6069 [Verbose] > │         let v13 : int32 = v2 + 1                                             │
00:00:27 #6070 [Verbose] > │         let v14 : UH0 = v12 ()                                               │
00:00:27 #6071 [Verbose] > │         let v15 : (unit -> UH3) = closure9(v1)                               │
00:00:27 #6072 [Verbose] > │         let v16 : UH3 = UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v15) │
00:00:27 #6073 [Verbose] > │         method3(v14, v16, v13)                                               │
00:00:27 #6074 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:27 #6075 [Verbose] > │         struct (v1, v2)                                                      │
00:00:27 #6076 [Verbose] > │ and closure10 (v0 : UH3) () : UH3 =                                          │
00:00:27 #6077 [Verbose] > │     v0                                                                       │
00:00:27 #6078 [Verbose] > │ and method4 (v0 : UH3, v1 : UH3) : UH3 =                                     │
00:00:27 #6079 [Verbose] > │     match v0 with                                                            │
00:00:27 #6080 [Verbose] > │     | UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons  │
00:00:27 #6081 [Verbose] > │ *)                                                                           │
00:00:27 #6082 [Verbose] > │         let v13 : UH3 = v12 ()                                               │
00:00:27 #6083 [Verbose] > │         let v14 : (unit -> UH3) = closure10(v1)                              │
00:00:27 #6084 [Verbose] > │         let v15 : UH3 = UH3_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v14) │
00:00:27 #6085 [Verbose] > │         method4(v13, v15)                                                    │
00:00:27 #6086 [Verbose] > │     | UH3_1 -> (* StreamNil *)                                               │
00:00:27 #6087 [Verbose] > │         v1                                                                   │
00:00:27 #6088 [Verbose] > │ and method6 (v0 : int32, v1 : UH0) : US2 =                                   │
00:00:27 #6089 [Verbose] > │     match v1 with                                                            │
00:00:27 #6090 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* StreamCons *)    │
00:00:27 #6091 [Verbose] > │         let v12 : bool = v0 <= 0                                             │
00:00:27 #6092 [Verbose] > │         if v12 then                                                          │
00:00:27 #6093 [Verbose] > │             US2_1(v2, v3, v4, v5, v6, v7, v8, v9, v10)                       │
00:00:27 #6094 [Verbose] > │         else                                                                 │
00:00:27 #6095 [Verbose] > │             let v14 : int32 = v0 - 1                                         │
00:00:27 #6096 [Verbose] > │             let v15 : UH0 = v11 ()                                           │
00:00:27 #6097 [Verbose] > │             method6(v14, v15)                                                │
00:00:27 #6098 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:27 #6099 [Verbose] > │         US2_0                                                                │
00:00:27 #6100 [Verbose] > │ and closure11 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float,   │
00:00:27 #6101 [Verbose] > │ v5 : float, v6 : float, v7 : float, v8 : float) struct (v9 : float, v10 :    │
00:00:27 #6102 [Verbose] > │ float, v11 : float, v12 : float, v13 : float, v14 : float, v15 : float, v16  │
00:00:27 #6103 [Verbose] > │ : float, v17 : float) : struct (float * float * float) =                     │
00:00:27 #6104 [Verbose] > │     let v18 : float = -1.0 * v2                                              │
00:00:27 #6105 [Verbose] > │     let v19 : float = -1.0 * v3                                              │
00:00:27 #6106 [Verbose] > │     let v20 : float = -1.0 * v4                                              │
00:00:27 #6107 [Verbose] > │     let v21 : float = v11 + v18                                              │
00:00:27 #6108 [Verbose] > │     let v22 : float = v12 + v19                                              │
00:00:27 #6109 [Verbose] > │     let v23 : float = v13 + v20                                              │
00:00:27 #6110 [Verbose] > │     let v24 : float = v21 * v21                                              │
00:00:27 #6111 [Verbose] > │     let v25 : float = v22 * v22                                              │
00:00:27 #6112 [Verbose] > │     let v26 : float = v24 + v25                                              │
00:00:27 #6113 [Verbose] > │     let v27 : float = v23 * v23                                              │
00:00:27 #6114 [Verbose] > │     let v28 : float = v26 + v27                                              │
00:00:27 #6115 [Verbose] > │     let v29 : float = sqrt v28                                               │
00:00:27 #6116 [Verbose] > │     let v30 : bool = v29 >= 0.06                                             │
00:00:27 #6117 [Verbose] > │     let v33 : float =                                                        │
00:00:27 #6118 [Verbose] > │         if v30 then                                                          │
00:00:27 #6119 [Verbose] > │             0.0                                                              │
00:00:27 #6120 [Verbose] > │         else                                                                 │
00:00:27 #6121 [Verbose] > │             let v31 : float = v29 - 0.06                                     │
00:00:27 #6122 [Verbose] > │             let v32 : float = -30.0 * v31                                    │
00:00:27 #6123 [Verbose] > │             v32                                                              │
00:00:27 #6124 [Verbose] > │     let v34 : float = v33 * v21                                              │
00:00:27 #6125 [Verbose] > │     let v35 : float = v33 * v22                                              │
00:00:27 #6126 [Verbose] > │     let v36 : float = v33 * v23                                              │
00:00:27 #6127 [Verbose] > │     let v37 : float = v34 / v29                                              │
00:00:27 #6128 [Verbose] > │     let v38 : float = v35 / v29                                              │
00:00:27 #6129 [Verbose] > │     let v39 : float = v36 / v29                                              │
00:00:27 #6130 [Verbose] > │     struct (v37, v38, v39)                                                   │
00:00:27 #6131 [Verbose] > │ and closure12 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4  │
00:00:27 #6132 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *   │
00:00:27 #6133 [Verbose] > │ float * float) =                                                             │
00:00:27 #6134 [Verbose] > │     struct (0.0, 0.0, 0.0)                                                   │
00:00:27 #6135 [Verbose] > │ and closure13 (v0 : UH1) () : UH1 =                                          │
00:00:27 #6136 [Verbose] > │     v0                                                                       │
00:00:27 #6137 [Verbose] > │ and method5 (v0 : UH0, v1 : UH3, v2 : UH1) : UH1 =                           │
00:00:27 #6138 [Verbose] > │     match v1 with                                                            │
00:00:27 #6139 [Verbose] > │     | UH3_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons │
00:00:27 #6140 [Verbose] > │ *)                                                                           │
00:00:27 #6141 [Verbose] > │         let v14 : UH3 = v13 ()                                               │
00:00:27 #6142 [Verbose] > │         let v15 : UH1 = method5(v0, v14, v2)                                 │
00:00:27 #6143 [Verbose] > │         let v16 : bool = v3 = 0                                              │
00:00:27 #6144 [Verbose] > │         let v52 : US1 =                                                      │
00:00:27 #6145 [Verbose] > │             if v16 then                                                      │
00:00:27 #6146 [Verbose] > │                 let v17 : int32 = 1                                          │
00:00:27 #6147 [Verbose] > │                 let v18 : US2 = method6(v17, v0)                             │
00:00:27 #6148 [Verbose] > │                 match v18 with                                               │
00:00:27 #6149 [Verbose] > │                 | US2_0 -> (* None *)                                        │
00:00:27 #6150 [Verbose] > │                     US1_0                                                    │
00:00:27 #6151 [Verbose] > │                 | US2_1(v19, v20, v21, v22, v23, v24, v25, v26, v27) -> (*   │
00:00:27 #6152 [Verbose] > │ Some *)                                                                      │
00:00:27 #6153 [Verbose] > │                     let v28 : (struct (float * float * float * float * float │
00:00:27 #6154 [Verbose] > │ * float * float * float * float) -> struct (float * float * float)) =        │
00:00:27 #6155 [Verbose] > │ closure11(v19, v20, v21, v22, v23, v24, v25, v26, v27)                       │
00:00:27 #6156 [Verbose] > │                     US1_1(v28)                                               │
00:00:27 #6157 [Verbose] > │             else                                                             │
00:00:27 #6158 [Verbose] > │                 let v33 : bool = v3 = 1                                      │
00:00:27 #6159 [Verbose] > │                 if v33 then                                                  │
00:00:27 #6160 [Verbose] > │                     let v34 : int32 = 0                                      │
00:00:27 #6161 [Verbose] > │                     let v35 : US2 = method6(v34, v0)                         │
00:00:27 #6162 [Verbose] > │                     match v35 with                                           │
00:00:27 #6163 [Verbose] > │                     | US2_0 -> (* None *)                                    │
00:00:27 #6164 [Verbose] > │                         US1_0                                                │
00:00:27 #6165 [Verbose] > │                     | US2_1(v36, v37, v38, v39, v40, v41, v42, v43, v44) ->  │
00:00:27 #6166 [Verbose] > │ (* Some *)                                                                   │
00:00:27 #6167 [Verbose] > │                         let v45 : (struct (float * float * float * float *   │
00:00:27 #6168 [Verbose] > │ float * float * float * float * float) -> struct (float * float * float)) =  │
00:00:27 #6169 [Verbose] > │ closure11(v36, v37, v38, v39, v40, v41, v42, v43, v44)                       │
00:00:27 #6170 [Verbose] > │                         US1_1(v45)                                           │
00:00:27 #6171 [Verbose] > │                 else                                                         │
00:00:27 #6172 [Verbose] > │                     US1_0                                                    │
00:00:27 #6173 [Verbose] > │         let v56 : (struct (float * float * float * float * float * float *   │
00:00:27 #6174 [Verbose] > │ float * float * float) -> struct (float * float * float)) =                  │
00:00:27 #6175 [Verbose] > │             match v52 with                                                   │
00:00:27 #6176 [Verbose] > │             | US1_0 -> (* None *)                                            │
00:00:27 #6177 [Verbose] > │                 closure12()                                                  │
00:00:27 #6178 [Verbose] > │             | US1_1(v53) -> (* Some *)                                       │
00:00:27 #6179 [Verbose] > │                 v53                                                          │
00:00:27 #6180 [Verbose] > │         let struct (v57 : float, v58 : float, v59 : float) = v56 struct (v4, │
00:00:27 #6181 [Verbose] > │ v5, v6, v7, v8, v9, v10, v11, v12)                                           │
00:00:27 #6182 [Verbose] > │         let v60 : float = v57 / v5                                           │
00:00:27 #6183 [Verbose] > │         let v61 : float = v58 / v5                                           │
00:00:27 #6184 [Verbose] > │         let v62 : float = v59 / v5                                           │
00:00:27 #6185 [Verbose] > │         let v63 : (unit -> UH1) = closure13(v15)                             │
00:00:27 #6186 [Verbose] > │         UH1_0(0.0, 0.0, v10, v11, v12, 1.0, v60, v61, v62, v63)              │
00:00:27 #6187 [Verbose] > │     | UH3_1 -> (* StreamNil *)                                               │
00:00:27 #6188 [Verbose] > │         v2                                                                   │
00:00:27 #6189 [Verbose] > │ and closure8 () (v0 : UH0) : UH1 =                                           │
00:00:27 #6190 [Verbose] > │     let v1 : UH3 = UH3_1                                                     │
00:00:27 #6191 [Verbose] > │     let v2 : int32 = 0                                                       │
00:00:27 #6192 [Verbose] > │     let struct (v3 : UH3, v4 : int32) = method3(v0, v1, v2)                  │
00:00:27 #6193 [Verbose] > │     let v5 : UH3 = UH3_1                                                     │
00:00:27 #6194 [Verbose] > │     let v6 : UH3 = method4(v3, v5)                                           │
00:00:27 #6195 [Verbose] > │     let v7 : UH1 = UH1_1                                                     │
00:00:27 #6196 [Verbose] > │     let v8 : UH1 = method5(v0, v6, v7)                                       │
00:00:27 #6197 [Verbose] > │     v8                                                                       │
00:00:27 #6198 [Verbose] > │ and method8 (v0 : int32, v1 : int32) : UH5 =                                 │
00:00:27 #6199 [Verbose] > │     let v2 : bool = v1 < v0                                                  │
00:00:27 #6200 [Verbose] > │     if v2 then                                                               │
00:00:27 #6201 [Verbose] > │         let v3 : int32 = v1 + 1                                              │
00:00:27 #6202 [Verbose] > │         let v4 : UH5 = method8(v0, v3)                                       │
00:00:27 #6203 [Verbose] > │         UH5_0(v1, v4)                                                        │
00:00:27 #6204 [Verbose] > │     else                                                                     │
00:00:27 #6205 [Verbose] > │         UH5_1                                                                │
00:00:27 #6206 [Verbose] > │ and closure15 () () : UH0 =                                                  │
00:00:27 #6207 [Verbose] > │     UH0_1                                                                    │
00:00:27 #6208 [Verbose] > │ and closure14 () () : UH0 =                                                  │
00:00:27 #6209 [Verbose] > │     let v0 : (unit -> UH0) = closure15()                                     │
00:00:27 #6210 [Verbose] > │     UH0_0(0.0, 0.16, 1.0, 0.02, 0.0, 0.0, 0.0, 0.0, 0.0, v0)                 │
00:00:27 #6211 [Verbose] > │ and method9 (v0 : (UH0 -> UH0), v1 : UH5, v2 : UH0) : UH0 =                  │
00:00:27 #6212 [Verbose] > │     match v1 with                                                            │
00:00:27 #6213 [Verbose] > │     | UH5_0(v3, v4) -> (* Cons *)                                            │
00:00:27 #6214 [Verbose] > │         let v5 : (unit -> UH0) = closure4(v2)                                │
00:00:27 #6215 [Verbose] > │         let v6 : (unit -> UH0) = method1(v2, v5)                             │
00:00:27 #6216 [Verbose] > │         let v7 : UH0 = v6 ()                                                 │
00:00:27 #6217 [Verbose] > │         let v8 : UH0 = v0 v7                                                 │
00:00:27 #6218 [Verbose] > │         method9(v0, v4, v8)                                                  │
00:00:27 #6219 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:00:27 #6220 [Verbose] > │         v2                                                                   │
00:00:27 #6221 [Verbose] > │ and method10 (v0 : UH4, v1 : UH4) : UH4 =                                    │
00:00:27 #6222 [Verbose] > │     match v0 with                                                            │
00:00:27 #6223 [Verbose] > │     | UH4_0(v2, v3) -> (* Cons *)                                            │
00:00:27 #6224 [Verbose] > │         let v4 : UH4 = UH4_0(v2, v1)                                         │
00:00:27 #6225 [Verbose] > │         method10(v3, v4)                                                     │
00:00:27 #6226 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:27 #6227 [Verbose] > │         v1                                                                   │
00:00:27 #6228 [Verbose] > │ and method7 (v0 : (UH0 -> UH0), v1 : UH4, v2 : int32) : UH4 =                │
00:00:27 #6229 [Verbose] > │     let v3 : int32 = 0                                                       │
00:00:27 #6230 [Verbose] > │     let v4 : UH5 = method8(v2, v3)                                           │
00:00:27 #6231 [Verbose] > │     let v5 : float = 0.0                                                     │
00:00:27 #6232 [Verbose] > │     let v6 : float = 0.16                                                    │
00:00:27 #6233 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:27 #6234 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:27 #6235 [Verbose] > │     let v9 : float = 0.0                                                     │
00:00:27 #6236 [Verbose] > │     let v10 : float = 0.0                                                    │
00:00:27 #6237 [Verbose] > │     let v11 : float = 0.2                                                    │
00:00:27 #6238 [Verbose] > │     let v12 : float = 0.0                                                    │
00:00:27 #6239 [Verbose] > │     let v13 : float = 0.0                                                    │
00:00:27 #6240 [Verbose] > │     let v14 : (unit -> UH0) = closure14()                                    │
00:00:27 #6241 [Verbose] > │     let v15 : UH0 = UH0_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)       │
00:00:27 #6242 [Verbose] > │     let v16 : UH0 = method9(v0, v4, v15)                                     │
00:00:27 #6243 [Verbose] > │     let v17 : int32 = 0                                                      │
00:00:27 #6244 [Verbose] > │     let v18 : US2 = method6(v17, v16)                                        │
00:00:27 #6245 [Verbose] > │     let v30 : bool =                                                         │
00:00:27 #6246 [Verbose] > │         match v18 with                                                       │
00:00:27 #6247 [Verbose] > │         | US2_0 -> (* None *)                                                │
00:00:27 #6248 [Verbose] > │             false                                                            │
00:00:27 #6249 [Verbose] > │         | US2_1(v19, v20, v21, v22, v23, v24, v25, v26, v27) -> (* Some *)   │
00:00:27 #6250 [Verbose] > │             let v28 : bool = v24 <= 10.0                                     │
00:00:27 #6251 [Verbose] > │             v28                                                              │
00:00:27 #6252 [Verbose] > │     if v30 then                                                              │
00:00:27 #6253 [Verbose] > │         let v31 : UH4 = UH4_0(v16, v1)                                       │
00:00:27 #6254 [Verbose] > │         let v32 : int32 = v2 + 1                                             │
00:00:27 #6255 [Verbose] > │         method7(v0, v31, v32)                                                │
00:00:27 #6256 [Verbose] > │     else                                                                     │
00:00:27 #6257 [Verbose] > │         let v34 : UH4 = UH4_1                                                │
00:00:27 #6258 [Verbose] > │         method10(v1, v34)                                                    │
00:00:27 #6259 [Verbose] > │ and closure16 (v0 : UH7) () : UH7 =                                          │
00:00:27 #6260 [Verbose] > │     v0                                                                       │
00:00:27 #6261 [Verbose] > │ and method12 (v0 : UH0, v1 : UH7) : UH7 =                                    │
00:00:27 #6262 [Verbose] > │     match v0 with                                                            │
00:00:27 #6263 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* StreamCons *)    │
00:00:27 #6264 [Verbose] > │         let v12 : UH0 = v11 ()                                               │
00:00:27 #6265 [Verbose] > │         let v13 : UH7 = method12(v12, v1)                                    │
00:00:27 #6266 [Verbose] > │         let v14 : float = v8 * v8                                            │
00:00:27 #6267 [Verbose] > │         let v15 : float = v9 * v9                                            │
00:00:27 #6268 [Verbose] > │         let v16 : float = v14 + v15                                          │
00:00:27 #6269 [Verbose] > │         let v17 : float = v10 * v10                                          │
00:00:27 #6270 [Verbose] > │         let v18 : float = v16 + v17                                          │
00:00:27 #6271 [Verbose] > │         let v19 : float = sqrt v18                                           │
00:00:27 #6272 [Verbose] > │         let v20 : float = 0.5 * v3                                           │
00:00:27 #6273 [Verbose] > │         let v21 : float = v19 ** 2.0                                         │
00:00:27 #6274 [Verbose] > │         let v22 : float = v20 * v21                                          │
00:00:27 #6275 [Verbose] > │         let v23 : (unit -> UH7) = closure16(v13)                             │
00:00:27 #6276 [Verbose] > │         UH7_0(v22, v23)                                                      │
00:00:27 #6277 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:27 #6278 [Verbose] > │         v1                                                                   │
00:00:27 #6279 [Verbose] > │ and method13 (v0 : UH7, v1 : float) : float =                                │
00:00:27 #6280 [Verbose] > │     match v0 with                                                            │
00:00:27 #6281 [Verbose] > │     | UH7_0(v2, v3) -> (* StreamCons *)                                      │
00:00:27 #6282 [Verbose] > │         let v4 : float = v1 + v2                                             │
00:00:27 #6283 [Verbose] > │         let v5 : UH7 = v3 ()                                                 │
00:00:27 #6284 [Verbose] > │         method13(v5, v4)                                                     │
00:00:27 #6285 [Verbose] > │     | UH7_1 -> (* StreamNil *)                                               │
00:00:27 #6286 [Verbose] > │         v1                                                                   │
00:00:27 #6287 [Verbose] > │ and method11 (v0 : UH4, v1 : UH6) : UH6 =                                    │
00:00:27 #6288 [Verbose] > │     match v0 with                                                            │
00:00:27 #6289 [Verbose] > │     | UH4_0(v2, v3) -> (* Cons *)                                            │
00:00:27 #6290 [Verbose] > │         let v4 : UH6 = method11(v3, v1)                                      │
00:00:27 #6291 [Verbose] > │         let v5 : int32 = 0                                                   │
00:00:27 #6292 [Verbose] > │         let v6 : US2 = method6(v5, v2)                                       │
00:00:27 #6293 [Verbose] > │         let v23 : US3 =                                                      │
00:00:27 #6294 [Verbose] > │             match v6 with                                                    │
00:00:27 #6295 [Verbose] > │             | US2_0 -> (* None *)                                            │
00:00:27 #6296 [Verbose] > │                 US3_0                                                        │
00:00:27 #6297 [Verbose] > │             | US2_1(v7, v8, v9, v10, v11, v12, v13, v14, v15) -> (* Some *)  │
00:00:27 #6298 [Verbose] > │                 let v16 : UH7 = UH7_1                                        │
00:00:27 #6299 [Verbose] > │                 let v17 : UH7 = method12(v2, v16)                            │
00:00:27 #6300 [Verbose] > │                 let v18 : float = 0.0                                        │
00:00:27 #6301 [Verbose] > │                 let v19 : float = method13(v17, v18)                         │
00:00:27 #6302 [Verbose] > │                 US3_1(v12, v19)                                              │
00:00:27 #6303 [Verbose] > │         UH6_0(v23, v4)                                                       │
00:00:27 #6304 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:27 #6305 [Verbose] > │         v1                                                                   │
00:00:27 #6306 [Verbose] > │ and method14 (v0 : UH6, v1 : UH8) : UH8 =                                    │
00:00:27 #6307 [Verbose] > │     match v0 with                                                            │
00:00:27 #6308 [Verbose] > │     | UH6_0(v2, v3) -> (* Cons *)                                            │
00:00:27 #6309 [Verbose] > │         let v4 : UH8 = method14(v3, v1)                                      │
00:00:27 #6310 [Verbose] > │         match v2 with                                                        │
00:00:27 #6311 [Verbose] > │         | US3_0 -> (* None *)                                                │
00:00:27 #6312 [Verbose] > │             v4                                                               │
00:00:27 #6313 [Verbose] > │         | US3_1(v5, v6) -> (* Some *)                                        │
00:00:27 #6314 [Verbose] > │             UH8_0(v5, v6, v4)                                                │
00:00:27 #6315 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:27 #6316 [Verbose] > │         v1                                                                   │
00:00:27 #6317 [Verbose] > │ and method15 (v0 : UH8, v1 : UH9, v2 : UH9) : struct (UH9 * UH9) =           │
00:00:27 #6318 [Verbose] > │     match v0 with                                                            │
00:00:27 #6319 [Verbose] > │     | UH8_0(v3, v4, v5) -> (* Cons *)                                        │
00:00:27 #6320 [Verbose] > │         let v6 : UH9 = UH9_0(v3, v1)                                         │
00:00:27 #6321 [Verbose] > │         let v7 : UH9 = UH9_0(v4, v2)                                         │
00:00:27 #6322 [Verbose] > │         method15(v5, v6, v7)                                                 │
00:00:27 #6323 [Verbose] > │     | UH8_1 -> (* Nil *)                                                     │
00:00:27 #6324 [Verbose] > │         struct (v1, v2)                                                      │
00:00:27 #6325 [Verbose] > │ and method16 (v0 : UH9, v1 : UH9) : UH9 =                                    │
00:00:27 #6326 [Verbose] > │     match v0 with                                                            │
00:00:27 #6327 [Verbose] > │     | UH9_0(v2, v3) -> (* Cons *)                                            │
00:00:27 #6328 [Verbose] > │         let v4 : UH9 = UH9_0(v2, v1)                                         │
00:00:27 #6329 [Verbose] > │         method16(v3, v4)                                                     │
00:00:27 #6330 [Verbose] > │     | UH9_1 -> (* Nil *)                                                     │
00:00:27 #6331 [Verbose] > │         v1                                                                   │
00:00:27 #6332 [Verbose] > │ and closure20 (v0 : (unit -> UH1), v1 : (unit -> UH1)) () : UH1 =            │
00:00:27 #6333 [Verbose] > │     let v2 : UH1 = v1 ()                                                     │
00:00:27 #6334 [Verbose] > │     let v3 : UH1 = v0 ()                                                     │
00:00:27 #6335 [Verbose] > │     match v2 with                                                            │
00:00:27 #6336 [Verbose] > │     | UH1_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *)  │
00:00:27 #6337 [Verbose] > │         match v3 with                                                        │
00:00:27 #6338 [Verbose] > │         | UH1_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (*      │
00:00:27 #6339 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #6340 [Verbose] > │             let v24 : float = v4 + v14                                       │
00:00:27 #6341 [Verbose] > │             let v25 : float = v5 + v15                                       │
00:00:27 #6342 [Verbose] > │             let v26 : float = v9 + v19                                       │
00:00:27 #6343 [Verbose] > │             let v27 : float = v6 + v16                                       │
00:00:27 #6344 [Verbose] > │             let v28 : float = v7 + v17                                       │
00:00:27 #6345 [Verbose] > │             let v29 : float = v8 + v18                                       │
00:00:27 #6346 [Verbose] > │             let v30 : float = v10 + v20                                      │
00:00:27 #6347 [Verbose] > │             let v31 : float = v11 + v21                                      │
00:00:27 #6348 [Verbose] > │             let v32 : float = v12 + v22                                      │
00:00:27 #6349 [Verbose] > │             let v33 : (unit -> UH1) = closure20(v23, v13)                    │
00:00:27 #6350 [Verbose] > │             UH1_0(v24, v25, v27, v28, v29, v26, v30, v31, v32, v33)          │
00:00:27 #6351 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6352 [Verbose] > │             UH1_1                                                            │
00:00:27 #6353 [Verbose] > │     | UH1_1 -> (* StreamNil *)                                               │
00:00:27 #6354 [Verbose] > │         UH1_1                                                                │
00:00:27 #6355 [Verbose] > │ and closure19 (v0 : float, v1 : (UH0 -> UH1)) (v2 : UH0) : UH0 =             │
00:00:27 #6356 [Verbose] > │     let v3 : UH1 = v1 v2                                                     │
00:00:27 #6357 [Verbose] > │     let v4 : float = v0 / 2.0                                                │
00:00:27 #6358 [Verbose] > │     let v46 : UH0 =                                                          │
00:00:27 #6359 [Verbose] > │         match v3 with                                                        │
00:00:27 #6360 [Verbose] > │         | UH1_0(v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (*           │
00:00:27 #6361 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #6362 [Verbose] > │             match v2 with                                                    │
00:00:27 #6363 [Verbose] > │             | UH0_0(v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) -> (*  │
00:00:27 #6364 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #6365 [Verbose] > │                 let v25 : float = v10 * v4                                   │
00:00:27 #6366 [Verbose] > │                 let v26 : float = v20 + v25                                  │
00:00:27 #6367 [Verbose] > │                 let v27 : float = v4 * v7                                    │
00:00:27 #6368 [Verbose] > │                 let v28 : float = v4 * v8                                    │
00:00:27 #6369 [Verbose] > │                 let v29 : float = v4 * v9                                    │
00:00:27 #6370 [Verbose] > │                 let v30 : float = v17 + v27                                  │
00:00:27 #6371 [Verbose] > │                 let v31 : float = v18 + v28                                  │
00:00:27 #6372 [Verbose] > │                 let v32 : float = v19 + v29                                  │
00:00:27 #6373 [Verbose] > │                 let v33 : float = v4 * v11                                   │
00:00:27 #6374 [Verbose] > │                 let v34 : float = v4 * v12                                   │
00:00:27 #6375 [Verbose] > │                 let v35 : float = v4 * v13                                   │
00:00:27 #6376 [Verbose] > │                 let v36 : float = v21 + v33                                  │
00:00:27 #6377 [Verbose] > │                 let v37 : float = v22 + v34                                  │
00:00:27 #6378 [Verbose] > │                 let v38 : float = v23 + v35                                  │
00:00:27 #6379 [Verbose] > │                 let v39 : (unit -> UH0) = closure3(v4, v24, v14)             │
00:00:27 #6380 [Verbose] > │                 UH0_0(v15, v16, v30, v31, v32, v26, v36, v37, v38, v39)      │
00:00:27 #6381 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:27 #6382 [Verbose] > │                 UH0_1                                                        │
00:00:27 #6383 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6384 [Verbose] > │             UH0_1                                                            │
00:00:27 #6385 [Verbose] > │     let v47 : (unit -> UH0) = closure4(v46)                                  │
00:00:27 #6386 [Verbose] > │     let v48 : (unit -> UH0) = method1(v46, v47)                              │
00:00:27 #6387 [Verbose] > │     let v49 : UH0 = v48 ()                                                   │
00:00:27 #6388 [Verbose] > │     let v50 : UH1 = v1 v49                                                   │
00:00:27 #6389 [Verbose] > │     let v92 : UH0 =                                                          │
00:00:27 #6390 [Verbose] > │         match v50 with                                                       │
00:00:27 #6391 [Verbose] > │         | UH1_0(v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) -> (*      │
00:00:27 #6392 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #6393 [Verbose] > │             match v2 with                                                    │
00:00:27 #6394 [Verbose] > │             | UH0_0(v61, v62, v63, v64, v65, v66, v67, v68, v69, v70) -> (*  │
00:00:27 #6395 [Verbose] > │ StreamCons *)                                                                │
00:00:27 #6396 [Verbose] > │                 let v71 : float = v56 * v4                                   │
00:00:27 #6397 [Verbose] > │                 let v72 : float = v66 + v71                                  │
00:00:27 #6398 [Verbose] > │                 let v73 : float = v4 * v53                                   │
00:00:27 #6399 [Verbose] > │                 let v74 : float = v4 * v54                                   │
00:00:27 #6400 [Verbose] > │                 let v75 : float = v4 * v55                                   │
00:00:27 #6401 [Verbose] > │                 let v76 : float = v63 + v73                                  │
00:00:27 #6402 [Verbose] > │                 let v77 : float = v64 + v74                                  │
00:00:27 #6403 [Verbose] > │                 let v78 : float = v65 + v75                                  │
00:00:27 #6404 [Verbose] > │                 let v79 : float = v4 * v57                                   │
00:00:27 #6405 [Verbose] > │                 let v80 : float = v4 * v58                                   │
00:00:27 #6406 [Verbose] > │                 let v81 : float = v4 * v59                                   │
00:00:27 #6407 [Verbose] > │                 let v82 : float = v67 + v79                                  │
00:00:27 #6408 [Verbose] > │                 let v83 : float = v68 + v80                                  │
00:00:27 #6409 [Verbose] > │                 let v84 : float = v69 + v81                                  │
00:00:27 #6410 [Verbose] > │                 let v85 : (unit -> UH0) = closure3(v4, v70, v60)             │
00:00:27 #6411 [Verbose] > │                 UH0_0(v61, v62, v76, v77, v78, v72, v82, v83, v84, v85)      │
00:00:27 #6412 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:27 #6413 [Verbose] > │                 UH0_1                                                        │
00:00:27 #6414 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6415 [Verbose] > │             UH0_1                                                            │
00:00:27 #6416 [Verbose] > │     let v93 : (unit -> UH0) = closure4(v92)                                  │
00:00:27 #6417 [Verbose] > │     let v94 : (unit -> UH0) = method1(v92, v93)                              │
00:00:27 #6418 [Verbose] > │     let v95 : UH0 = v94 ()                                                   │
00:00:27 #6419 [Verbose] > │     let v96 : UH1 = v1 v95                                                   │
00:00:27 #6420 [Verbose] > │     let v138 : UH0 =                                                         │
00:00:27 #6421 [Verbose] > │         match v96 with                                                       │
00:00:27 #6422 [Verbose] > │         | UH1_0(v97, v98, v99, v100, v101, v102, v103, v104, v105, v106) ->  │
00:00:27 #6423 [Verbose] > │ (* StreamCons *)                                                             │
00:00:27 #6424 [Verbose] > │             match v2 with                                                    │
00:00:27 #6425 [Verbose] > │             | UH0_0(v107, v108, v109, v110, v111, v112, v113, v114, v115,    │
00:00:27 #6426 [Verbose] > │ v116) -> (* StreamCons *)                                                    │
00:00:27 #6427 [Verbose] > │                 let v117 : float = v102 * v0                                 │
00:00:27 #6428 [Verbose] > │                 let v118 : float = v112 + v117                               │
00:00:27 #6429 [Verbose] > │                 let v119 : float = v0 * v99                                  │
00:00:27 #6430 [Verbose] > │                 let v120 : float = v0 * v100                                 │
00:00:27 #6431 [Verbose] > │                 let v121 : float = v0 * v101                                 │
00:00:27 #6432 [Verbose] > │                 let v122 : float = v109 + v119                               │
00:00:27 #6433 [Verbose] > │                 let v123 : float = v110 + v120                               │
00:00:27 #6434 [Verbose] > │                 let v124 : float = v111 + v121                               │
00:00:27 #6435 [Verbose] > │                 let v125 : float = v0 * v103                                 │
00:00:27 #6436 [Verbose] > │                 let v126 : float = v0 * v104                                 │
00:00:27 #6437 [Verbose] > │                 let v127 : float = v0 * v105                                 │
00:00:27 #6438 [Verbose] > │                 let v128 : float = v113 + v125                               │
00:00:27 #6439 [Verbose] > │                 let v129 : float = v114 + v126                               │
00:00:27 #6440 [Verbose] > │                 let v130 : float = v115 + v127                               │
00:00:27 #6441 [Verbose] > │                 let v131 : (unit -> UH0) = closure3(v0, v116, v106)          │
00:00:27 #6442 [Verbose] > │                 UH0_0(v107, v108, v122, v123, v124, v118, v128, v129, v130,  │
00:00:27 #6443 [Verbose] > │ v131)                                                                        │
00:00:27 #6444 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:27 #6445 [Verbose] > │                 UH0_1                                                        │
00:00:27 #6446 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6447 [Verbose] > │             UH0_1                                                            │
00:00:27 #6448 [Verbose] > │     let v139 : (unit -> UH0) = closure4(v138)                                │
00:00:27 #6449 [Verbose] > │     let v140 : (unit -> UH0) = method1(v138, v139)                           │
00:00:27 #6450 [Verbose] > │     let v141 : UH0 = v140 ()                                                 │
00:00:27 #6451 [Verbose] > │     let v142 : UH1 = v1 v141                                                 │
00:00:27 #6452 [Verbose] > │     let v143 : float = v0 / 6.0                                              │
00:00:27 #6453 [Verbose] > │     let v180 : UH1 =                                                         │
00:00:27 #6454 [Verbose] > │         match v3 with                                                        │
00:00:27 #6455 [Verbose] > │         | UH1_0(v144, v145, v146, v147, v148, v149, v150, v151, v152, v153)  │
00:00:27 #6456 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:27 #6457 [Verbose] > │             match v50 with                                                   │
00:00:27 #6458 [Verbose] > │             | UH1_0(v154, v155, v156, v157, v158, v159, v160, v161, v162,    │
00:00:27 #6459 [Verbose] > │ v163) -> (* StreamCons *)                                                    │
00:00:27 #6460 [Verbose] > │                 let v164 : float = v144 + v154                               │
00:00:27 #6461 [Verbose] > │                 let v165 : float = v145 + v155                               │
00:00:27 #6462 [Verbose] > │                 let v166 : float = v149 + v159                               │
00:00:27 #6463 [Verbose] > │                 let v167 : float = v146 + v156                               │
00:00:27 #6464 [Verbose] > │                 let v168 : float = v147 + v157                               │
00:00:27 #6465 [Verbose] > │                 let v169 : float = v148 + v158                               │
00:00:27 #6466 [Verbose] > │                 let v170 : float = v150 + v160                               │
00:00:27 #6467 [Verbose] > │                 let v171 : float = v151 + v161                               │
00:00:27 #6468 [Verbose] > │                 let v172 : float = v152 + v162                               │
00:00:27 #6469 [Verbose] > │                 let v173 : (unit -> UH1) = closure20(v163, v153)             │
00:00:27 #6470 [Verbose] > │                 UH1_0(v164, v165, v167, v168, v169, v166, v170, v171, v172,  │
00:00:27 #6471 [Verbose] > │ v173)                                                                        │
00:00:27 #6472 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:27 #6473 [Verbose] > │                 UH1_1                                                        │
00:00:27 #6474 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6475 [Verbose] > │             UH1_1                                                            │
00:00:27 #6476 [Verbose] > │     let v217 : UH1 =                                                         │
00:00:27 #6477 [Verbose] > │         match v180 with                                                      │
00:00:27 #6478 [Verbose] > │         | UH1_0(v181, v182, v183, v184, v185, v186, v187, v188, v189, v190)  │
00:00:27 #6479 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:27 #6480 [Verbose] > │             match v50 with                                                   │
00:00:27 #6481 [Verbose] > │             | UH1_0(v191, v192, v193, v194, v195, v196, v197, v198, v199,    │
00:00:27 #6482 [Verbose] > │ v200) -> (* StreamCons *)                                                    │
00:00:27 #6483 [Verbose] > │                 let v201 : float = v181 + v191                               │
00:00:27 #6484 [Verbose] > │                 let v202 : float = v182 + v192                               │
00:00:27 #6485 [Verbose] > │                 let v203 : float = v186 + v196                               │
00:00:27 #6486 [Verbose] > │                 let v204 : float = v183 + v193                               │
00:00:27 #6487 [Verbose] > │                 let v205 : float = v184 + v194                               │
00:00:27 #6488 [Verbose] > │                 let v206 : float = v185 + v195                               │
00:00:27 #6489 [Verbose] > │                 let v207 : float = v187 + v197                               │
00:00:27 #6490 [Verbose] > │                 let v208 : float = v188 + v198                               │
00:00:27 #6491 [Verbose] > │                 let v209 : float = v189 + v199                               │
00:00:27 #6492 [Verbose] > │                 let v210 : (unit -> UH1) = closure20(v200, v190)             │
00:00:27 #6493 [Verbose] > │                 UH1_0(v201, v202, v204, v205, v206, v203, v207, v208, v209,  │
00:00:27 #6494 [Verbose] > │ v210)                                                                        │
00:00:27 #6495 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:27 #6496 [Verbose] > │                 UH1_1                                                        │
00:00:27 #6497 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6498 [Verbose] > │             UH1_1                                                            │
00:00:27 #6499 [Verbose] > │     let v254 : UH1 =                                                         │
00:00:27 #6500 [Verbose] > │         match v217 with                                                      │
00:00:27 #6501 [Verbose] > │         | UH1_0(v218, v219, v220, v221, v222, v223, v224, v225, v226, v227)  │
00:00:27 #6502 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:27 #6503 [Verbose] > │             match v96 with                                                   │
00:00:27 #6504 [Verbose] > │             | UH1_0(v228, v229, v230, v231, v232, v233, v234, v235, v236,    │
00:00:27 #6505 [Verbose] > │ v237) -> (* StreamCons *)                                                    │
00:00:27 #6506 [Verbose] > │                 let v238 : float = v218 + v228                               │
00:00:27 #6507 [Verbose] > │                 let v239 : float = v219 + v229                               │
00:00:27 #6508 [Verbose] > │                 let v240 : float = v223 + v233                               │
00:00:27 #6509 [Verbose] > │                 let v241 : float = v220 + v230                               │
00:00:27 #6510 [Verbose] > │                 let v242 : float = v221 + v231                               │
00:00:27 #6511 [Verbose] > │                 let v243 : float = v222 + v232                               │
00:00:27 #6512 [Verbose] > │                 let v244 : float = v224 + v234                               │
00:00:27 #6513 [Verbose] > │                 let v245 : float = v225 + v235                               │
00:00:27 #6514 [Verbose] > │                 let v246 : float = v226 + v236                               │
00:00:27 #6515 [Verbose] > │                 let v247 : (unit -> UH1) = closure20(v237, v227)             │
00:00:27 #6516 [Verbose] > │                 UH1_0(v238, v239, v241, v242, v243, v240, v244, v245, v246,  │
00:00:27 #6517 [Verbose] > │ v247)                                                                        │
00:00:27 #6518 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:27 #6519 [Verbose] > │                 UH1_1                                                        │
00:00:27 #6520 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6521 [Verbose] > │             UH1_1                                                            │
00:00:27 #6522 [Verbose] > │     let v291 : UH1 =                                                         │
00:00:27 #6523 [Verbose] > │         match v254 with                                                      │
00:00:27 #6524 [Verbose] > │         | UH1_0(v255, v256, v257, v258, v259, v260, v261, v262, v263, v264)  │
00:00:27 #6525 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:27 #6526 [Verbose] > │             match v96 with                                                   │
00:00:27 #6527 [Verbose] > │             | UH1_0(v265, v266, v267, v268, v269, v270, v271, v272, v273,    │
00:00:27 #6528 [Verbose] > │ v274) -> (* StreamCons *)                                                    │
00:00:27 #6529 [Verbose] > │                 let v275 : float = v255 + v265                               │
00:00:27 #6530 [Verbose] > │                 let v276 : float = v256 + v266                               │
00:00:27 #6531 [Verbose] > │                 let v277 : float = v260 + v270                               │
00:00:27 #6532 [Verbose] > │                 let v278 : float = v257 + v267                               │
00:00:27 #6533 [Verbose] > │                 let v279 : float = v258 + v268                               │
00:00:27 #6534 [Verbose] > │                 let v280 : float = v259 + v269                               │
00:00:27 #6535 [Verbose] > │                 let v281 : float = v261 + v271                               │
00:00:27 #6536 [Verbose] > │                 let v282 : float = v262 + v272                               │
00:00:27 #6537 [Verbose] > │                 let v283 : float = v263 + v273                               │
00:00:27 #6538 [Verbose] > │                 let v284 : (unit -> UH1) = closure20(v274, v264)             │
00:00:27 #6539 [Verbose] > │                 UH1_0(v275, v276, v278, v279, v280, v277, v281, v282, v283,  │
00:00:27 #6540 [Verbose] > │ v284)                                                                        │
00:00:27 #6541 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:27 #6542 [Verbose] > │                 UH1_1                                                        │
00:00:27 #6543 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6544 [Verbose] > │             UH1_1                                                            │
00:00:27 #6545 [Verbose] > │     let v328 : UH1 =                                                         │
00:00:27 #6546 [Verbose] > │         match v291 with                                                      │
00:00:27 #6547 [Verbose] > │         | UH1_0(v292, v293, v294, v295, v296, v297, v298, v299, v300, v301)  │
00:00:27 #6548 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:27 #6549 [Verbose] > │             match v142 with                                                  │
00:00:27 #6550 [Verbose] > │             | UH1_0(v302, v303, v304, v305, v306, v307, v308, v309, v310,    │
00:00:27 #6551 [Verbose] > │ v311) -> (* StreamCons *)                                                    │
00:00:27 #6552 [Verbose] > │                 let v312 : float = v292 + v302                               │
00:00:27 #6553 [Verbose] > │                 let v313 : float = v293 + v303                               │
00:00:27 #6554 [Verbose] > │                 let v314 : float = v297 + v307                               │
00:00:27 #6555 [Verbose] > │                 let v315 : float = v294 + v304                               │
00:00:27 #6556 [Verbose] > │                 let v316 : float = v295 + v305                               │
00:00:27 #6557 [Verbose] > │                 let v317 : float = v296 + v306                               │
00:00:27 #6558 [Verbose] > │                 let v318 : float = v298 + v308                               │
00:00:27 #6559 [Verbose] > │                 let v319 : float = v299 + v309                               │
00:00:27 #6560 [Verbose] > │                 let v320 : float = v300 + v310                               │
00:00:27 #6561 [Verbose] > │                 let v321 : (unit -> UH1) = closure20(v311, v301)             │
00:00:27 #6562 [Verbose] > │                 UH1_0(v312, v313, v315, v316, v317, v314, v318, v319, v320,  │
00:00:27 #6563 [Verbose] > │ v321)                                                                        │
00:00:27 #6564 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:27 #6565 [Verbose] > │                 UH1_1                                                        │
00:00:27 #6566 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6567 [Verbose] > │             UH1_1                                                            │
00:00:27 #6568 [Verbose] > │     let v370 : UH0 =                                                         │
00:00:27 #6569 [Verbose] > │         match v328 with                                                      │
00:00:27 #6570 [Verbose] > │         | UH1_0(v329, v330, v331, v332, v333, v334, v335, v336, v337, v338)  │
00:00:27 #6571 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:27 #6572 [Verbose] > │             match v2 with                                                    │
00:00:27 #6573 [Verbose] > │             | UH0_0(v339, v340, v341, v342, v343, v344, v345, v346, v347,    │
00:00:27 #6574 [Verbose] > │ v348) -> (* StreamCons *)                                                    │
00:00:27 #6575 [Verbose] > │                 let v349 : float = v334 * v143                               │
00:00:27 #6576 [Verbose] > │                 let v350 : float = v344 + v349                               │
00:00:27 #6577 [Verbose] > │                 let v351 : float = v143 * v331                               │
00:00:27 #6578 [Verbose] > │                 let v352 : float = v143 * v332                               │
00:00:27 #6579 [Verbose] > │                 let v353 : float = v143 * v333                               │
00:00:27 #6580 [Verbose] > │                 let v354 : float = v341 + v351                               │
00:00:27 #6581 [Verbose] > │                 let v355 : float = v342 + v352                               │
00:00:27 #6582 [Verbose] > │                 let v356 : float = v343 + v353                               │
00:00:27 #6583 [Verbose] > │                 let v357 : float = v143 * v335                               │
00:00:27 #6584 [Verbose] > │                 let v358 : float = v143 * v336                               │
00:00:27 #6585 [Verbose] > │                 let v359 : float = v143 * v337                               │
00:00:27 #6586 [Verbose] > │                 let v360 : float = v345 + v357                               │
00:00:27 #6587 [Verbose] > │                 let v361 : float = v346 + v358                               │
00:00:27 #6588 [Verbose] > │                 let v362 : float = v347 + v359                               │
00:00:27 #6589 [Verbose] > │                 let v363 : (unit -> UH0) = closure3(v143, v348, v338)        │
00:00:27 #6590 [Verbose] > │                 UH0_0(v339, v340, v354, v355, v356, v350, v360, v361, v362,  │
00:00:27 #6591 [Verbose] > │ v363)                                                                        │
00:00:27 #6592 [Verbose] > │             | UH0_1 -> (* StreamNil *)                                       │
00:00:27 #6593 [Verbose] > │                 UH0_1                                                        │
00:00:27 #6594 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:27 #6595 [Verbose] > │             UH0_1                                                            │
00:00:27 #6596 [Verbose] > │     let v371 : (unit -> UH0) = closure4(v370)                                │
00:00:27 #6597 [Verbose] > │     let v372 : (unit -> UH0) = method1(v370, v371)                           │
00:00:27 #6598 [Verbose] > │     let v373 : UH0 = v372 ()                                                 │
00:00:27 #6599 [Verbose] > │     v373                                                                     │
00:00:27 #6600 [Verbose] > │ and closure18 (v0 : float) (v1 : (UH0 -> UH1)) : (UH0 -> UH0) =              │
00:00:27 #6601 [Verbose] > │     closure19(v0, v1)                                                        │
00:00:27 #6602 [Verbose] > │ and closure17 () (v0 : float) : ((UH0 -> UH1) -> (UH0 -> UH0)) =             │
00:00:27 #6603 [Verbose] > │     closure18(v0)                                                            │
00:00:27 #6604 [Verbose] > │ and method17 (v0 : UH4, v1 : UH6) : UH6 =                                    │
00:00:27 #6605 [Verbose] > │     match v0 with                                                            │
00:00:27 #6606 [Verbose] > │     | UH4_0(v2, v3) -> (* Cons *)                                            │
00:00:27 #6607 [Verbose] > │         let v4 : UH6 = method17(v3, v1)                                      │
00:00:27 #6608 [Verbose] > │         let v5 : int32 = 0                                                   │
00:00:27 #6609 [Verbose] > │         let v6 : US2 = method6(v5, v2)                                       │
00:00:27 #6610 [Verbose] > │         let v23 : US3 =                                                      │
00:00:27 #6611 [Verbose] > │             match v6 with                                                    │
00:00:27 #6612 [Verbose] > │             | US2_0 -> (* None *)                                            │
00:00:27 #6613 [Verbose] > │                 US3_0                                                        │
00:00:27 #6614 [Verbose] > │             | US2_1(v7, v8, v9, v10, v11, v12, v13, v14, v15) -> (* Some *)  │
00:00:27 #6615 [Verbose] > │                 let v16 : UH7 = UH7_1                                        │
00:00:27 #6616 [Verbose] > │                 let v17 : UH7 = method12(v2, v16)                            │
00:00:27 #6617 [Verbose] > │                 let v18 : float = 0.0                                        │
00:00:27 #6618 [Verbose] > │                 let v19 : float = method13(v17, v18)                         │
00:00:27 #6619 [Verbose] > │                 US3_1(v12, v19)                                              │
00:00:27 #6620 [Verbose] > │         UH6_0(v23, v4)                                                       │
00:00:27 #6621 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:27 #6622 [Verbose] > │         v1                                                                   │
00:00:27 #6623 [Verbose] > │ and method19 (v0 : UH9, v1 : int32) : int32 =                                │
00:00:27 #6624 [Verbose] > │     match v0 with                                                            │
00:00:27 #6625 [Verbose] > │     | UH9_0(v2, v3) -> (* Cons *)                                            │
00:00:27 #6626 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:27 #6627 [Verbose] > │         method19(v3, v4)                                                     │
00:00:27 #6628 [Verbose] > │     | UH9_1 -> (* Nil *)                                                     │
00:00:27 #6629 [Verbose] > │         v1                                                                   │
00:00:27 #6630 [Verbose] > │ and method20 (v0 : (float []), v1 : UH9, v2 : int32) : int32 =               │
00:00:27 #6631 [Verbose] > │     match v1 with                                                            │
00:00:27 #6632 [Verbose] > │     | UH9_0(v3, v4) -> (* Cons *)                                            │
00:00:27 #6633 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:27 #6634 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:27 #6635 [Verbose] > │         method20(v0, v4, v5)                                                 │
00:00:27 #6636 [Verbose] > │     | UH9_1 -> (* Nil *)                                                     │
00:00:27 #6637 [Verbose] > │         v2                                                                   │
00:00:27 #6638 [Verbose] > │ and method18 (v0 : UH9) : (float []) =                                       │
00:00:27 #6639 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:27 #6640 [Verbose] > │     let v2 : int32 = method19(v0, v1)                                        │
00:00:27 #6641 [Verbose] > │     let v3 : (float []) = Array.zeroCreate<float> (v2)                       │
00:00:27 #6642 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:27 #6643 [Verbose] > │     let v5 : int32 = method20(v3, v0, v4)                                    │
00:00:27 #6644 [Verbose] > │     v3                                                                       │
00:00:27 #6645 [Verbose] > │ and method21 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:27 #6646 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:27 #6647 [Verbose] > │     v0                                                                       │
00:00:27 #6648 [Verbose] > │ and method0 () : struct (string * string * string * (struct (string * (float │
00:00:27 #6649 [Verbose] > │ []) * (float [])) [])) =                                                     │
00:00:27 #6650 [Verbose] > │     let v0 : (float -> ((UH0 -> UH1) -> (UH0 -> UH0))) = closure0()          │
00:00:27 #6651 [Verbose] > │     let v1 : ((UH0 -> UH1) -> (UH0 -> UH0)) = v0 0.03                        │
00:00:27 #6652 [Verbose] > │     let v2 : (UH0 -> UH1) = closure8()                                       │
00:00:27 #6653 [Verbose] > │     let v3 : (UH0 -> UH0) = v1 v2                                            │
00:00:27 #6654 [Verbose] > │     let v4 : UH4 = UH4_1                                                     │
00:00:27 #6655 [Verbose] > │     let v5 : int32 = 0                                                       │
00:00:27 #6656 [Verbose] > │     let v6 : UH4 = method7(v3, v4, v5)                                       │
00:00:27 #6657 [Verbose] > │     let v7 : UH6 = UH6_1                                                     │
00:00:27 #6658 [Verbose] > │     let v8 : UH6 = method11(v6, v7)                                          │
00:00:27 #6659 [Verbose] > │     let v9 : UH8 = UH8_1                                                     │
00:00:27 #6660 [Verbose] > │     let v10 : UH8 = method14(v8, v9)                                         │
00:00:27 #6661 [Verbose] > │     let v11 : UH9 = UH9_1                                                    │
00:00:27 #6662 [Verbose] > │     let v12 : UH9 = UH9_1                                                    │
00:00:27 #6663 [Verbose] > │     let struct (v13 : UH9, v14 : UH9) = method15(v10, v11, v12)              │
00:00:27 #6664 [Verbose] > │     let v15 : UH9 = UH9_1                                                    │
00:00:27 #6665 [Verbose] > │     let v16 : UH9 = method16(v13, v15)                                       │
00:00:27 #6666 [Verbose] > │     let v17 : UH9 = UH9_1                                                    │
00:00:27 #6667 [Verbose] > │     let v18 : UH9 = method16(v14, v17)                                       │
00:00:27 #6668 [Verbose] > │     let v19 : (float -> ((UH0 -> UH1) -> (UH0 -> UH0))) = closure17()        │
00:00:27 #6669 [Verbose] > │     let v20 : ((UH0 -> UH1) -> (UH0 -> UH0)) = v19 0.03                      │
00:00:27 #6670 [Verbose] > │     let v21 : (UH0 -> UH0) = v20 v2                                          │
00:00:27 #6671 [Verbose] > │     let v22 : UH4 = UH4_1                                                    │
00:00:27 #6672 [Verbose] > │     let v23 : int32 = 0                                                      │
00:00:27 #6673 [Verbose] > │     let v24 : UH4 = method7(v21, v22, v23)                                   │
00:00:27 #6674 [Verbose] > │     let v25 : UH6 = UH6_1                                                    │
00:00:27 #6675 [Verbose] > │     let v26 : UH6 = method17(v24, v25)                                       │
00:00:27 #6676 [Verbose] > │     let v27 : UH8 = UH8_1                                                    │
00:00:27 #6677 [Verbose] > │     let v28 : UH8 = method14(v26, v27)                                       │
00:00:27 #6678 [Verbose] > │     let v29 : UH9 = UH9_1                                                    │
00:00:27 #6679 [Verbose] > │     let v30 : UH9 = UH9_1                                                    │
00:00:27 #6680 [Verbose] > │     let struct (v31 : UH9, v32 : UH9) = method15(v28, v29, v30)              │
00:00:27 #6681 [Verbose] > │     let v33 : UH9 = UH9_1                                                    │
00:00:27 #6682 [Verbose] > │     let v34 : UH9 = method16(v31, v33)                                       │
00:00:27 #6683 [Verbose] > │     let v35 : UH9 = UH9_1                                                    │
00:00:27 #6684 [Verbose] > │     let v36 : UH9 = method16(v32, v35)                                       │
00:00:27 #6685 [Verbose] > │     let v37 : (float []) = method18(v16)                                     │
00:00:27 #6686 [Verbose] > │     let v38 : (float []) = method18(v18)                                     │
00:00:27 #6687 [Verbose] > │     let v39 : (float []) = method18(v34)                                     │
00:00:27 #6688 [Verbose] > │     let v40 : (float []) = method18(v36)                                     │
00:00:27 #6689 [Verbose] > │     let v41 : string = "euler-cromer"                                        │
00:00:27 #6690 [Verbose] > │     let v42 : string = "runge-kutta 4"                                       │
00:00:27 #6691 [Verbose] > │     let v43 : (struct (string * (float []) * (float [])) []) = [|struct      │
00:00:27 #6692 [Verbose] > │ (v41, v37, v38); struct (v42, v39, v40)|]                                    │
00:00:27 #6693 [Verbose] > │     let v44 : (struct (string * (float []) * (float [])) []) = method21(v43) │
00:00:27 #6694 [Verbose] > │     let v45 : string = "system kinetic energy versus time"                   │
00:00:27 #6695 [Verbose] > │     let v46 : string = "time (s)"                                            │
00:00:27 #6696 [Verbose] > │     let v47 : string = "system kinetic energy (j)"                           │
00:00:27 #6697 [Verbose] > │     struct (v45, v46, v47, v44)                                              │
00:00:27 #6698 [Verbose] > │ method0()                                                                    │
00:00:27 #6699 [Verbose] > │                                                                              │
00:00:27 #6700 [Verbose] > │                                                                              │
00:00:27 #6701 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 #6702 [Verbose] >
00:00:27 #6703 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:27 #6704 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:27 #6705 [Verbose] > │ ### wave 2                                                                   │
00:00:27 #6706 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:27 #6707 [Verbose] >
00:00:27 #6708 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:27 #6709 [Verbose] > // // test
00:00:27 #6710 [Verbose] >
00:00:27 #6711 [Verbose] > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:00:27 #6712 [Verbose] >     inl r1 = st1.pos_vec
00:00:27 #6713 [Verbose] >     inl r2 = st2.pos_vec
00:00:27 #6714 [Verbose] >     inl r21 = r2 ^-^ r1
00:00:27 #6715 [Verbose] >     inl r21mag = magnitude r21
00:00:27 #6716 [Verbose] >     -k * (r21mag - re) *^ r21 ^/ r21mag
00:00:27 #6717 [Verbose] >
00:00:27 #6718 [Verbose] > inl fixed_linear_spring k re r1 =
00:00:27 #6719 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:27 #6720 [Verbose] >     linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:00:27 #6721 [Verbose] > r1 })
00:00:27 #6722 [Verbose] >
00:00:27 #6723 [Verbose] > inl forces_string () =
00:00:27 #6724 [Verbose] >     [[
00:00:27 #6725 [Verbose] >         ExternalForce (0i32, fixed_linear_spring 5384 0 (zero_vec ()))
00:00:27 #6726 [Verbose] >         ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:00:27 #6727 [Verbose] >     ]] /@ (
00:00:27 #6728 [Verbose] >         listm'.init_series 0 59 1
00:00:27 #6729 [Verbose] >         |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:00:27 #6730 [Verbose] >     )
00:00:27 #6731 [Verbose] >
00:00:27 #6732 [Verbose] > inl string_update dt =
00:00:27 #6733 [Verbose] >     update_mps (join runge_kutta_4 dt) (join forces_string ())
00:00:27 #6734 [Verbose] >
00:00:27 #6735 [Verbose] > inl string_initial_overtone n =
00:00:27 #6736 [Verbose] >     inl ball_mass = 0.0008293 * 0.65 / 64
00:00:27 #6737 [Verbose] >     inl (particle_state default_particle_state') = default_particle_state ()
00:00:27 #6738 [Verbose] >     listm'.init_series 0.01 0.64 0.01
00:00:27 #6739 [Verbose] >     |> listm.map (fun x =>
00:00:27 #6740 [Verbose] >         inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:00:27 #6741 [Verbose] >         particle_state {
00:00:27 #6742 [Verbose] >             default_particle_state' with
00:00:27 #6743 [Verbose] >                 mass = ball_mass
00:00:27 #6744 [Verbose] >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:00:27 #6745 [Verbose] >                 velocity = zero_vec ()
00:00:27 #6746 [Verbose] >         }
00:00:27 #6747 [Verbose] >     )
00:00:27 #6748 [Verbose] >     |> stream.from_list
00:00:27 #6749 [Verbose] >     |> multi_particle_state
00:00:27 #6750 [Verbose] >
00:00:27 #6751 [Verbose] > let main () =
00:00:27 #6752 [Verbose] >     inl ~frames = listm'.init_series 0 65 1f64 |> stream.from_list
00:00:27 #6753 [Verbose] >     inl ~initial_state = string_initial_overtone 3i32
00:00:27 #6754 [Verbose] >     inl frames =
00:00:27 #6755 [Verbose] >         frames
00:00:27 #6756 [Verbose] >         |> stream.map (fun n =>
00:00:27 #6757 [Verbose] >             inl (multi_particle_state sts) =
00:00:27 #6758 [Verbose] >                 stream.iterate (string_update 0.000025) initial_state |>
00:00:27 #6759 [Verbose] > stream.item n
00:00:27 #6760 [Verbose] >             inl x, y =
00:00:27 #6761 [Verbose] >                 [[ zero_vec () ]]
00:00:27 #6762 [Verbose] >                 /@ (sts |> stream.map (fun (particle_state st) => st.pos_vec) |>
00:00:27 #6763 [Verbose] > stream.to_list)
00:00:27 #6764 [Verbose] >                 /@ [[ 0.65 *^ i_hat () ]]
00:00:27 #6765 [Verbose] >                 |> listm.map (fun r => r.x, r.y)
00:00:27 #6766 [Verbose] >                 |> stream.from_list
00:00:27 #6767 [Verbose] >                 |> stream.unzip
00:00:27 #6768 [Verbose] >             inl x : a i32 _ = x |> stream.to_list |> listm.toArray
00:00:27 #6769 [Verbose] >             inl y : a i32 _ = y |> stream.to_list |> listm.toArray
00:00:27 #6770 [Verbose] >             x, y
00:00:27 #6771 [Verbose] >         )
00:00:27 #6772 [Verbose] >
00:00:27 #6773 [Verbose] >     inl plots =
00:00:27 #6774 [Verbose] >         frames
00:00:27 #6775 [Verbose] >         |> stream.indexed
00:00:27 #6776 [Verbose] >         |> stream.map (fun ((n : i32), (x, y)) =>
00:00:27 #6777 [Verbose] >             "wave",
00:00:27 #6778 [Verbose] >             "position (m)",
00:00:27 #6779 [Verbose] >             "displacement (m)",
00:00:27 #6780 [Verbose] >             ;[[
00:00:27 #6781 [Verbose] >                 ($"$\"{!n}\"" : string), x, y
00:00:27 #6782 [Verbose] >             ]]
00:00:27 #6783 [Verbose] >         )
00:00:27 #6784 [Verbose] >
00:00:27 #6785 [Verbose] >     plots |> stream.to_list |> listm.toArray : a i32 _
00:00:27 #6786 [Verbose] > Building /tmp/!dotnet-repl/20240226-2108-2094-9475-9b0b045a9f88/main.spi
00:00:31 #6787 [Verbose] >
00:00:31 #6788 [Verbose] > ╭─[ 4.74s - return value ]─────────────────────────────────────────────────────╮
00:00:31 #6789 [Verbose] > │ <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr │
00:00:31 #6790 [Verbose] > │ ><td>0</td><td><svg width="640" height="480" viewBox="0 0 640 480"           │
00:00:31 #6791 [Verbose] > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:00:31 #6792 [Verbose] > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:00:31 #6793 [Verbose] > │ stroke="none"/>                                                              │
00:00:31 #6794 [Verbose] > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:00:31 #6795 [Verbose] > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:00:31 #6796 [Verbose] > │ fill="#FFFFFF">                                                              │
00:00:31 #6797 [Verbose] > │ wave                                                                         │
00:00:31 #6798 [Verbose] > │ </text>                                                                      │
00:00:31 #6799 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:00:31 #6800 [Verbose] > │ y2="75"/>                                                                    │
00:00:31 #6801 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:00:31 #6802 [Verbose] > │ y2="75"/>                                                                    │
00:00:31 #6803 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:00:31 #6804 [Verbose] > │ y2="75"/>                                                                    │
00:00:31 #6805 [Verbose] > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424"         │
00:00:31 #6806 [Verbose] > │ x2="85...                                                                    │
00:00:31 #6807 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 #6808 [Verbose] >
00:00:31 #6809 [Verbose] > ╭─[ 4.77s - stdout ]───────────────────────────────────────────────────────────╮
00:00:31 #6810 [Verbose] > │ type UH0 =                                                                   │
00:00:31 #6811 [Verbose] > │     | UH0_0 of float * (unit -> UH0)                                         │
00:00:31 #6812 [Verbose] > │     | UH0_1                                                                  │
00:00:31 #6813 [Verbose] > │ and UH1 =                                                                    │
00:00:31 #6814 [Verbose] > │     | UH1_0 of float * float * float * float * float * float * float * float │
00:00:31 #6815 [Verbose] > │ * float * (unit -> UH1)                                                      │
00:00:31 #6816 [Verbose] > │     | UH1_1                                                                  │
00:00:31 #6817 [Verbose] > │ and UH2 =                                                                    │
00:00:31 #6818 [Verbose] > │     | UH2_0 of (float []) * (float []) * (unit -> UH2)                       │
00:00:31 #6819 [Verbose] > │     | UH2_1                                                                  │
00:00:31 #6820 [Verbose] > │ and UH3 =                                                                    │
00:00:31 #6821 [Verbose] > │     | UH3_0 of float * float * float * float * float * float * float * float │
00:00:31 #6822 [Verbose] > │ * float * (unit -> UH3)                                                      │
00:00:31 #6823 [Verbose] > │     | UH3_1                                                                  │
00:00:31 #6824 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:00:31 #6825 [Verbose] > │     | US0_0 of f0_0 : UH1                                                    │
00:00:31 #6826 [Verbose] > │     | US0_1 of f1_0 : (unit -> UH1)                                          │
00:00:31 #6827 [Verbose] > │ and Mut0 = {mutable l0 : US0}                                                │
00:00:31 #6828 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:00:31 #6829 [Verbose] > │     | US1_0 of f0_0 : int32 * f0_1 : (struct (float * float * float * float  │
00:00:31 #6830 [Verbose] > │ * float * float * float * float * float) -> struct (float * float * float))  │
00:00:31 #6831 [Verbose] > │     | US1_1 of f1_0 : int32 * f1_1 : int32 * f1_2 : (struct (float * float * │
00:00:31 #6832 [Verbose] > │ float * float * float * float * float * float * float) -> (struct (float *   │
00:00:31 #6833 [Verbose] > │ float * float * float * float * float * float * float * float) -> struct     │
00:00:31 #6834 [Verbose] > │ (float * float * float)))                                                    │
00:00:31 #6835 [Verbose] > │ and UH4 =                                                                    │
00:00:31 #6836 [Verbose] > │     | UH4_0 of US1 * UH4                                                     │
00:00:31 #6837 [Verbose] > │     | UH4_1                                                                  │
00:00:31 #6838 [Verbose] > │ and UH5 =                                                                    │
00:00:31 #6839 [Verbose] > │     | UH5_0 of int32 * float * float * float * float * float * float * float │
00:00:31 #6840 [Verbose] > │ * float * float * (unit -> UH5)                                              │
00:00:31 #6841 [Verbose] > │     | UH5_1                                                                  │
00:00:31 #6842 [Verbose] > │ and UH6 =                                                                    │
00:00:31 #6843 [Verbose] > │     | UH6_0 of (struct (float * float * float * float * float * float *      │
00:00:31 #6844 [Verbose] > │ float * float * float) -> struct (float * float * float)) * UH6              │
00:00:31 #6845 [Verbose] > │     | UH6_1                                                                  │
00:00:31 #6846 [Verbose] > │ and [<Struct>] US2 =                                                         │
00:00:31 #6847 [Verbose] > │     | US2_0                                                                  │
00:00:31 #6848 [Verbose] > │     | US2_1 of f1_0 : (struct (float * float * float * float * float * float │
00:00:31 #6849 [Verbose] > │ * float * float * float) -> struct (float * float * float))                  │
00:00:31 #6850 [Verbose] > │ and [<Struct>] US3 =                                                         │
00:00:31 #6851 [Verbose] > │     | US3_0                                                                  │
00:00:31 #6852 [Verbose] > │     | US3_1 of f1_0 : float * f1_1 : float * f1_2 : float * f1_3 : float *   │
00:00:31 #6853 [Verbose] > │ f1_4 : float * f1_5 : float * f1_6 : float * f1_7 : float * f1_8 : float     │
00:00:31 #6854 [Verbose] > │ and UH7 =                                                                    │
00:00:31 #6855 [Verbose] > │     | UH7_0 of float * float * float * UH7                                   │
00:00:31 #6856 [Verbose] > │     | UH7_1                                                                  │
00:00:31 #6857 [Verbose] > │ and UH8 =                                                                    │
00:00:31 #6858 [Verbose] > │     | UH8_0 of UH1 * (unit -> UH8)                                           │
00:00:31 #6859 [Verbose] > │     | UH8_1                                                                  │
00:00:31 #6860 [Verbose] > │ and [<Struct>] US4 =                                                         │
00:00:31 #6861 [Verbose] > │     | US4_0                                                                  │
00:00:31 #6862 [Verbose] > │     | US4_1 of f1_0 : UH1                                                    │
00:00:31 #6863 [Verbose] > │ and UH9 =                                                                    │
00:00:31 #6864 [Verbose] > │     | UH9_0 of float * float * float * (unit -> UH9)                         │
00:00:31 #6865 [Verbose] > │     | UH9_1                                                                  │
00:00:31 #6866 [Verbose] > │ and UH10 =                                                                   │
00:00:31 #6867 [Verbose] > │     | UH10_0 of float * float * UH10                                         │
00:00:31 #6868 [Verbose] > │     | UH10_1                                                                 │
00:00:31 #6869 [Verbose] > │ and UH11 =                                                                   │
00:00:31 #6870 [Verbose] > │     | UH11_0 of float * float * (unit -> UH11)                               │
00:00:31 #6871 [Verbose] > │     | UH11_1                                                                 │
00:00:31 #6872 [Verbose] > │ and UH12 =                                                                   │
00:00:31 #6873 [Verbose] > │     | UH12_0 of float * UH12                                                 │
00:00:31 #6874 [Verbose] > │     | UH12_1                                                                 │
00:00:31 #6875 [Verbose] > │ and UH13 =                                                                   │
00:00:31 #6876 [Verbose] > │     | UH13_0 of int32 * (float []) * (float []) * (unit -> UH13)             │
00:00:31 #6877 [Verbose] > │     | UH13_1                                                                 │
00:00:31 #6878 [Verbose] > │ and UH14 =                                                                   │
00:00:31 #6879 [Verbose] > │     | UH14_0 of string * string * string * (struct (string * (float []) *    │
00:00:31 #6880 [Verbose] > │ (float [])) []) * (unit -> UH14)                                             │
00:00:31 #6881 [Verbose] > │     | UH14_1                                                                 │
00:00:31 #6882 [Verbose] > │ and UH15 =                                                                   │
00:00:31 #6883 [Verbose] > │     | UH15_0 of string * string * string * (struct (string * (float []) *    │
00:00:31 #6884 [Verbose] > │ (float [])) []) * UH15                                                       │
00:00:31 #6885 [Verbose] > │     | UH15_1                                                                 │
00:00:31 #6886 [Verbose] > │ let rec closure65 () () : UH0 =                                              │
00:00:31 #6887 [Verbose] > │     UH0_1                                                                    │
00:00:31 #6888 [Verbose] > │ and closure64 () () : UH0 =                                                  │
00:00:31 #6889 [Verbose] > │     let v0 : (unit -> UH0) = closure65()                                     │
00:00:31 #6890 [Verbose] > │     UH0_0(65.0, v0)                                                          │
00:00:31 #6891 [Verbose] > │ and closure63 () () : UH0 =                                                  │
00:00:31 #6892 [Verbose] > │     let v0 : (unit -> UH0) = closure64()                                     │
00:00:31 #6893 [Verbose] > │     UH0_0(64.0, v0)                                                          │
00:00:31 #6894 [Verbose] > │ and closure62 () () : UH0 =                                                  │
00:00:31 #6895 [Verbose] > │     let v0 : (unit -> UH0) = closure63()                                     │
00:00:31 #6896 [Verbose] > │     UH0_0(63.0, v0)                                                          │
00:00:31 #6897 [Verbose] > │ and closure61 () () : UH0 =                                                  │
00:00:31 #6898 [Verbose] > │     let v0 : (unit -> UH0) = closure62()                                     │
00:00:31 #6899 [Verbose] > │     UH0_0(62.0, v0)                                                          │
00:00:31 #6900 [Verbose] > │ and closure60 () () : UH0 =                                                  │
00:00:31 #6901 [Verbose] > │     let v0 : (unit -> UH0) = closure61()                                     │
00:00:31 #6902 [Verbose] > │     UH0_0(61.0, v0)                                                          │
00:00:31 #6903 [Verbose] > │ and closure59 () () : UH0 =                                                  │
00:00:31 #6904 [Verbose] > │     let v0 : (unit -> UH0) = closure60()                                     │
00:00:31 #6905 [Verbose] > │     UH0_0(60.0, v0)                                                          │
00:00:31 #6906 [Verbose] > │ and closure58 () () : UH0 =                                                  │
00:00:31 #6907 [Verbose] > │     let v0 : (unit -> UH0) = closure59()                                     │
00:00:31 #6908 [Verbose] > │     UH0_0(59.0, v0)                                                          │
00:00:31 #6909 [Verbose] > │ and closure57 () () : UH0 =                                                  │
00:00:31 #6910 [Verbose] > │     let v0 : (unit -> UH0) = closure58()                                     │
00:00:31 #6911 [Verbose] > │     UH0_0(58.0, v0)                                                          │
00:00:31 #6912 [Verbose] > │ and closure56 () () : UH0 =                                                  │
00:00:31 #6913 [Verbose] > │     let v0 : (unit -> UH0) = closure57()                                     │
00:00:31 #6914 [Verbose] > │     UH0_0(57.0, v0)                                                          │
00:00:31 #6915 [Verbose] > │ and closure55 () () : UH0 =                                                  │
00:00:31 #6916 [Verbose] > │     let v0 : (unit -> UH0) = closure56()                                     │
00:00:31 #6917 [Verbose] > │     UH0_0(56.0, v0)                                                          │
00:00:31 #6918 [Verbose] > │ and closure54 () () : UH0 =                                                  │
00:00:31 #6919 [Verbose] > │     let v0 : (unit -> UH0) = closure55()                                     │
00:00:31 #6920 [Verbose] > │     UH0_0(55.0, v0)                                                          │
00:00:31 #6921 [Verbose] > │ and closure53 () () : UH0 =                                                  │
00:00:31 #6922 [Verbose] > │     let v0 : (unit -> UH0) = closure54()                                     │
00:00:31 #6923 [Verbose] > │     UH0_0(54.0, v0)                                                          │
00:00:31 #6924 [Verbose] > │ and closure52 () () : UH0 =                                                  │
00:00:31 #6925 [Verbose] > │     let v0 : (unit -> UH0) = closure53()                                     │
00:00:31 #6926 [Verbose] > │     UH0_0(53.0, v0)                                                          │
00:00:31 #6927 [Verbose] > │ and closure51 () () : UH0 =                                                  │
00:00:31 #6928 [Verbose] > │     let v0 : (unit -> UH0) = closure52()                                     │
00:00:31 #6929 [Verbose] > │     UH0_0(52.0, v0)                                                          │
00:00:31 #6930 [Verbose] > │ and closure50 () () : UH0 =                                                  │
00:00:31 #6931 [Verbose] > │     let v0 : (unit -> UH0) = closure51()                                     │
00:00:31 #6932 [Verbose] > │     UH0_0(51.0, v0)                                                          │
00:00:31 #6933 [Verbose] > │ and closure49 () () : UH0 =                                                  │
00:00:31 #6934 [Verbose] > │     let v0 : (unit -> UH0) = closure50()                                     │
00:00:31 #6935 [Verbose] > │     UH0_0(50.0, v0)                                                          │
00:00:31 #6936 [Verbose] > │ and closure48 () () : UH0 =                                                  │
00:00:31 #6937 [Verbose] > │     let v0 : (unit -> UH0) = closure49()                                     │
00:00:31 #6938 [Verbose] > │     UH0_0(49.0, v0)                                                          │
00:00:31 #6939 [Verbose] > │ and closure47 () () : UH0 =                                                  │
00:00:31 #6940 [Verbose] > │     let v0 : (unit -> UH0) = closure48()                                     │
00:00:31 #6941 [Verbose] > │     UH0_0(48.0, v0)                                                          │
00:00:31 #6942 [Verbose] > │ and closure46 () () : UH0 =                                                  │
00:00:31 #6943 [Verbose] > │     let v0 : (unit -> UH0) = closure47()                                     │
00:00:31 #6944 [Verbose] > │     UH0_0(47.0, v0)                                                          │
00:00:31 #6945 [Verbose] > │ and closure45 () () : UH0 =                                                  │
00:00:31 #6946 [Verbose] > │     let v0 : (unit -> UH0) = closure46()                                     │
00:00:31 #6947 [Verbose] > │     UH0_0(46.0, v0)                                                          │
00:00:31 #6948 [Verbose] > │ and closure44 () () : UH0 =                                                  │
00:00:31 #6949 [Verbose] > │     let v0 : (unit -> UH0) = closure45()                                     │
00:00:31 #6950 [Verbose] > │     UH0_0(45.0, v0)                                                          │
00:00:31 #6951 [Verbose] > │ and closure43 () () : UH0 =                                                  │
00:00:31 #6952 [Verbose] > │     let v0 : (unit -> UH0) = closure44()                                     │
00:00:31 #6953 [Verbose] > │     UH0_0(44.0, v0)                                                          │
00:00:31 #6954 [Verbose] > │ and closure42 () () : UH0 =                                                  │
00:00:31 #6955 [Verbose] > │     let v0 : (unit -> UH0) = closure43()                                     │
00:00:31 #6956 [Verbose] > │     UH0_0(43.0, v0)                                                          │
00:00:31 #6957 [Verbose] > │ and closure41 () () : UH0 =                                                  │
00:00:31 #6958 [Verbose] > │     let v0 : (unit -> UH0) = closure42()                                     │
00:00:31 #6959 [Verbose] > │     UH0_0(42.0, v0)                                                          │
00:00:31 #6960 [Verbose] > │ and closure40 () () : UH0 =                                                  │
00:00:31 #6961 [Verbose] > │     let v0 : (unit -> UH0) = closure41()                                     │
00:00:31 #6962 [Verbose] > │     UH0_0(41.0, v0)                                                          │
00:00:31 #6963 [Verbose] > │ and closure39 () () : UH0 =                                                  │
00:00:31 #6964 [Verbose] > │     let v0 : (unit -> UH0) = closure40()                                     │
00:00:31 #6965 [Verbose] > │     UH0_0(40.0, v0)                                                          │
00:00:31 #6966 [Verbose] > │ and closure38 () () : UH0 =                                                  │
00:00:31 #6967 [Verbose] > │     let v0 : (unit -> UH0) = closure39()                                     │
00:00:31 #6968 [Verbose] > │     UH0_0(39.0, v0)                                                          │
00:00:31 #6969 [Verbose] > │ and closure37 () () : UH0 =                                                  │
00:00:31 #6970 [Verbose] > │     let v0 : (unit -> UH0) = closure38()                                     │
00:00:31 #6971 [Verbose] > │     UH0_0(38.0, v0)                                                          │
00:00:31 #6972 [Verbose] > │ and closure36 () () : UH0 =                                                  │
00:00:31 #6973 [Verbose] > │     let v0 : (unit -> UH0) = closure37()                                     │
00:00:31 #6974 [Verbose] > │     UH0_0(37.0, v0)                                                          │
00:00:31 #6975 [Verbose] > │ and closure35 () () : UH0 =                                                  │
00:00:31 #6976 [Verbose] > │     let v0 : (unit -> UH0) = closure36()                                     │
00:00:31 #6977 [Verbose] > │     UH0_0(36.0, v0)                                                          │
00:00:31 #6978 [Verbose] > │ and closure34 () () : UH0 =                                                  │
00:00:31 #6979 [Verbose] > │     let v0 : (unit -> UH0) = closure35()                                     │
00:00:31 #6980 [Verbose] > │     UH0_0(35.0, v0)                                                          │
00:00:31 #6981 [Verbose] > │ and closure33 () () : UH0 =                                                  │
00:00:31 #6982 [Verbose] > │     let v0 : (unit -> UH0) = closure34()                                     │
00:00:31 #6983 [Verbose] > │     UH0_0(34.0, v0)                                                          │
00:00:31 #6984 [Verbose] > │ and closure32 () () : UH0 =                                                  │
00:00:31 #6985 [Verbose] > │     let v0 : (unit -> UH0) = closure33()                                     │
00:00:31 #6986 [Verbose] > │     UH0_0(33.0, v0)                                                          │
00:00:31 #6987 [Verbose] > │ and closure31 () () : UH0 =                                                  │
00:00:31 #6988 [Verbose] > │     let v0 : (unit -> UH0) = closure32()                                     │
00:00:31 #6989 [Verbose] > │     UH0_0(32.0, v0)                                                          │
00:00:31 #6990 [Verbose] > │ and closure30 () () : UH0 =                                                  │
00:00:31 #6991 [Verbose] > │     let v0 : (unit -> UH0) = closure31()                                     │
00:00:31 #6992 [Verbose] > │     UH0_0(31.0, v0)                                                          │
00:00:31 #6993 [Verbose] > │ and closure29 () () : UH0 =                                                  │
00:00:31 #6994 [Verbose] > │     let v0 : (unit -> UH0) = closure30()                                     │
00:00:31 #6995 [Verbose] > │     UH0_0(30.0, v0)                                                          │
00:00:31 #6996 [Verbose] > │ and closure28 () () : UH0 =                                                  │
00:00:31 #6997 [Verbose] > │     let v0 : (unit -> UH0) = closure29()                                     │
00:00:31 #6998 [Verbose] > │     UH0_0(29.0, v0)                                                          │
00:00:31 #6999 [Verbose] > │ and closure27 () () : UH0 =                                                  │
00:00:31 #7000 [Verbose] > │     let v0 : (unit -> UH0) = closure28()                                     │
00:00:31 #7001 [Verbose] > │     UH0_0(28.0, v0)                                                          │
00:00:31 #7002 [Verbose] > │ and closure26 () () : UH0 =                                                  │
00:00:31 #7003 [Verbose] > │     let v0 : (unit -> UH0) = closure27()                                     │
00:00:31 #7004 [Verbose] > │     UH0_0(27.0, v0)                                                          │
00:00:31 #7005 [Verbose] > │ and closure25 () () : UH0 =                                                  │
00:00:31 #7006 [Verbose] > │     let v0 : (unit -> UH0) = closure26()                                     │
00:00:31 #7007 [Verbose] > │     UH0_0(26.0, v0)                                                          │
00:00:31 #7008 [Verbose] > │ and closure24 () () : UH0 =                                                  │
00:00:31 #7009 [Verbose] > │     let v0 : (unit -> UH0) = closure25()                                     │
00:00:31 #7010 [Verbose] > │     UH0_0(25.0, v0)                                                          │
00:00:31 #7011 [Verbose] > │ and closure23 () () : UH0 =                                                  │
00:00:31 #7012 [Verbose] > │     let v0 : (unit -> UH0) = closure24()                                     │
00:00:31 #7013 [Verbose] > │     UH0_0(24.0, v0)                                                          │
00:00:31 #7014 [Verbose] > │ and closure22 () () : UH0 =                                                  │
00:00:31 #7015 [Verbose] > │     let v0 : (unit -> UH0) = closure23()                                     │
00:00:31 #7016 [Verbose] > │     UH0_0(23.0, v0)                                                          │
00:00:31 #7017 [Verbose] > │ and closure21 () () : UH0 =                                                  │
00:00:31 #7018 [Verbose] > │     let v0 : (unit -> UH0) = closure22()                                     │
00:00:31 #7019 [Verbose] > │     UH0_0(22.0, v0)                                                          │
00:00:31 #7020 [Verbose] > │ and closure20 () () : UH0 =                                                  │
00:00:31 #7021 [Verbose] > │     let v0 : (unit -> UH0) = closure21()                                     │
00:00:31 #7022 [Verbose] > │     UH0_0(21.0, v0)                                                          │
00:00:31 #7023 [Verbose] > │ and closure19 () () : UH0 =                                                  │
00:00:31 #7024 [Verbose] > │     let v0 : (unit -> UH0) = closure20()                                     │
00:00:31 #7025 [Verbose] > │     UH0_0(20.0, v0)                                                          │
00:00:31 #7026 [Verbose] > │ and closure18 () () : UH0 =                                                  │
00:00:31 #7027 [Verbose] > │     let v0 : (unit -> UH0) = closure19()                                     │
00:00:31 #7028 [Verbose] > │     UH0_0(19.0, v0)                                                          │
00:00:31 #7029 [Verbose] > │ and closure17 () () : UH0 =                                                  │
00:00:31 #7030 [Verbose] > │     let v0 : (unit -> UH0) = closure18()                                     │
00:00:31 #7031 [Verbose] > │     UH0_0(18.0, v0)                                                          │
00:00:31 #7032 [Verbose] > │ and closure16 () () : UH0 =                                                  │
00:00:31 #7033 [Verbose] > │     let v0 : (unit -> UH0) = closure17()                                     │
00:00:31 #7034 [Verbose] > │     UH0_0(17.0, v0)                                                          │
00:00:31 #7035 [Verbose] > │ and closure15 () () : UH0 =                                                  │
00:00:31 #7036 [Verbose] > │     let v0 : (unit -> UH0) = closure16()                                     │
00:00:31 #7037 [Verbose] > │     UH0_0(16.0, v0)                                                          │
00:00:31 #7038 [Verbose] > │ and closure14 () () : UH0 =                                                  │
00:00:31 #7039 [Verbose] > │     let v0 : (unit -> UH0) = closure15()                                     │
00:00:31 #7040 [Verbose] > │     UH0_0(15.0, v0)                                                          │
00:00:31 #7041 [Verbose] > │ and closure13 () () : UH0 =                                                  │
00:00:31 #7042 [Verbose] > │     let v0 : (unit -> UH0) = closure14()                                     │
00:00:31 #7043 [Verbose] > │     UH0_0(14.0, v0)                                                          │
00:00:31 #7044 [Verbose] > │ and closure12 () () : UH0 =                                                  │
00:00:31 #7045 [Verbose] > │     let v0 : (unit -> UH0) = closure13()                                     │
00:00:31 #7046 [Verbose] > │     UH0_0(13.0, v0)                                                          │
00:00:31 #7047 [Verbose] > │ and closure11 () () : UH0 =                                                  │
00:00:31 #7048 [Verbose] > │     let v0 : (unit -> UH0) = closure12()                                     │
00:00:31 #7049 [Verbose] > │     UH0_0(12.0, v0)                                                          │
00:00:31 #7050 [Verbose] > │ and closure10 () () : UH0 =                                                  │
00:00:31 #7051 [Verbose] > │     let v0 : (unit -> UH0) = closure11()                                     │
00:00:31 #7052 [Verbose] > │     UH0_0(11.0, v0)                                                          │
00:00:31 #7053 [Verbose] > │ and closure9 () () : UH0 =                                                   │
00:00:31 #7054 [Verbose] > │     let v0 : (unit -> UH0) = closure10()                                     │
00:00:31 #7055 [Verbose] > │     UH0_0(10.0, v0)                                                          │
00:00:31 #7056 [Verbose] > │ and closure8 () () : UH0 =                                                   │
00:00:31 #7057 [Verbose] > │     let v0 : (unit -> UH0) = closure9()                                      │
00:00:31 #7058 [Verbose] > │     UH0_0(9.0, v0)                                                           │
00:00:31 #7059 [Verbose] > │ and closure7 () () : UH0 =                                                   │
00:00:31 #7060 [Verbose] > │     let v0 : (unit -> UH0) = closure8()                                      │
00:00:31 #7061 [Verbose] > │     UH0_0(8.0, v0)                                                           │
00:00:31 #7062 [Verbose] > │ and closure6 () () : UH0 =                                                   │
00:00:31 #7063 [Verbose] > │     let v0 : (unit -> UH0) = closure7()                                      │
00:00:31 #7064 [Verbose] > │     UH0_0(7.0, v0)                                                           │
00:00:31 #7065 [Verbose] > │ and closure5 () () : UH0 =                                                   │
00:00:31 #7066 [Verbose] > │     let v0 : (unit -> UH0) = closure6()                                      │
00:00:31 #7067 [Verbose] > │     UH0_0(6.0, v0)                                                           │
00:00:31 #7068 [Verbose] > │ and closure4 () () : UH0 =                                                   │
00:00:31 #7069 [Verbose] > │     let v0 : (unit -> UH0) = closure5()                                      │
00:00:31 #7070 [Verbose] > │     UH0_0(5.0, v0)                                                           │
00:00:31 #7071 [Verbose] > │ and closure3 () () : UH0 =                                                   │
00:00:31 #7072 [Verbose] > │     let v0 : (unit -> UH0) = closure4()                                      │
00:00:31 #7073 [Verbose] > │     UH0_0(4.0, v0)                                                           │
00:00:31 #7074 [Verbose] > │ and closure2 () () : UH0 =                                                   │
00:00:31 #7075 [Verbose] > │     let v0 : (unit -> UH0) = closure3()                                      │
00:00:31 #7076 [Verbose] > │     UH0_0(3.0, v0)                                                           │
00:00:31 #7077 [Verbose] > │ and closure1 () () : UH0 =                                                   │
00:00:31 #7078 [Verbose] > │     let v0 : (unit -> UH0) = closure2()                                      │
00:00:31 #7079 [Verbose] > │     UH0_0(2.0, v0)                                                           │
00:00:31 #7080 [Verbose] > │ and closure0 () () : UH0 =                                                   │
00:00:31 #7081 [Verbose] > │     let v0 : (unit -> UH0) = closure1()                                      │
00:00:31 #7082 [Verbose] > │     UH0_0(1.0, v0)                                                           │
00:00:31 #7083 [Verbose] > │ and closure129 () () : UH1 =                                                 │
00:00:31 #7084 [Verbose] > │     UH1_1                                                                    │
00:00:31 #7085 [Verbose] > │ and closure128 () () : UH1 =                                                 │
00:00:31 #7086 [Verbose] > │     let v0 : (unit -> UH1) = closure129()                                    │
00:00:31 #7087 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.64, 0.0007224452478461016, 0.0, 0.0, 0.0,  │
00:00:31 #7088 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7089 [Verbose] > │ and closure127 () () : UH1 =                                                 │
00:00:31 #7090 [Verbose] > │     let v0 : (unit -> UH1) = closure128()                                    │
00:00:31 #7091 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.63, 0.001429728391993452, 0.0, 0.0, 0.0,   │
00:00:31 #7092 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7093 [Verbose] > │ and closure126 () () : UH1 =                                                 │
00:00:31 #7094 [Verbose] > │     let v0 : (unit -> UH1) = closure127()                                    │
00:00:31 #7095 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.62, 0.0021070055388626528, 0.0, 0.0, 0.0,  │
00:00:31 #7096 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7097 [Verbose] > │ and closure125 () () : UH1 =                                                 │
00:00:31 #7098 [Verbose] > │     let v0 : (unit -> UH1) = closure126()                                    │
00:00:31 #7099 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.61, 0.0027400625367733585, 0.0, 0.0, 0.0,  │
00:00:31 #7100 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7101 [Verbose] > │ and closure124 () () : UH1 =                                                 │
00:00:31 #7102 [Verbose] > │     let v0 : (unit -> UH1) = closure125()                                    │
00:00:31 #7103 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.6, 0.0033156132912039783, 0.0, 0.0, 0.0,   │
00:00:31 #7104 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7105 [Verbose] > │ and closure123 () () : UH1 =                                                 │
00:00:31 #7106 [Verbose] > │     let v0 : (unit -> UH1) = closure124()                                    │
00:00:31 #7107 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.59, 0.003821578602729245, 0.0, 0.0, 0.0,   │
00:00:31 #7108 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7109 [Verbose] > │ and closure122 () () : UH1 =                                                 │
00:00:31 #7110 [Verbose] > │     let v0 : (unit -> UH1) = closure123()                                    │
00:00:31 #7111 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.5800000000000001, 0.004247339675607605,    │
00:00:31 #7112 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7113 [Verbose] > │ and closure121 () () : UH1 =                                                 │
00:00:31 #7114 [Verbose] > │     let v0 : (unit -> UH1) = closure122()                                    │
00:00:31 #7115 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.5700000000000001, 0.004583960976582912,    │
00:00:31 #7116 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7117 [Verbose] > │ and closure120 () () : UH1 =                                                 │
00:00:31 #7118 [Verbose] > │     let v0 : (unit -> UH1) = closure121()                                    │
00:00:31 #7119 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.56, 0.004824377766717758, 0.0, 0.0, 0.0,   │
00:00:31 #7120 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7121 [Verbose] > │ and closure119 () () : UH1 =                                                 │
00:00:31 #7122 [Verbose] > │     let v0 : (unit -> UH1) = closure120()                                    │
00:00:31 #7123 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.55, 0.004963544370490271, 0.0, 0.0, 0.0,   │
00:00:31 #7124 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7125 [Verbose] > │ and closure118 () () : UH1 =                                                 │
00:00:31 #7126 [Verbose] > │     let v0 : (unit -> UH1) = closure119()                                    │
00:00:31 #7127 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.54, 0.004998540070400965, 0.0, 0.0, 0.0,   │
00:00:31 #7128 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7129 [Verbose] > │ and closure117 () () : UH1 =                                                 │
00:00:31 #7130 [Verbose] > │     let v0 : (unit -> UH1) = closure118()                                    │
00:00:31 #7131 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.53, 0.004928630404658255, 0.0, 0.0, 0.0,   │
00:00:31 #7132 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7133 [Verbose] > │ and closure116 () () : UH1 =                                                 │
00:00:31 #7134 [Verbose] > │     let v0 : (unit -> UH1) = closure117()                                    │
00:00:31 #7135 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.52, 0.004755282581475766, 0.0, 0.0, 0.0,   │
00:00:31 #7136 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7137 [Verbose] > │ and closure115 () () : UH1 =                                                 │
00:00:31 #7138 [Verbose] > │     let v0 : (unit -> UH1) = closure116()                                    │
00:00:31 #7139 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.51, 0.0044821346864785195, 0.0, 0.0, 0.0,  │
00:00:31 #7140 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7141 [Verbose] > │ and closure114 () () : UH1 =                                                 │
00:00:31 #7142 [Verbose] > │     let v0 : (unit -> UH1) = closure115()                                    │
00:00:31 #7143 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.5, 0.0041149193294682815, 0.0, 0.0, 0.0,   │
00:00:31 #7144 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7145 [Verbose] > │ and closure113 () () : UH1 =                                                 │
00:00:31 #7146 [Verbose] > │     let v0 : (unit -> UH1) = closure114()                                    │
00:00:31 #7147 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.49, 0.0036613433329888622, 0.0, 0.0, 0.0,  │
00:00:31 #7148 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7149 [Verbose] > │ and closure112 () () : UH1 =                                                 │
00:00:31 #7150 [Verbose] > │     let v0 : (unit -> UH1) = closure113()                                    │
00:00:31 #7151 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.48000000000000004, 0.003130925987691568,   │
00:00:31 #7152 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7153 [Verbose] > │ and closure111 () () : UH1 =                                                 │
00:00:31 #7154 [Verbose] > │     let v0 : (unit -> UH1) = closure112()                                    │
00:00:31 #7155 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.47000000000000003, 0.002534799269067954,   │
00:00:31 #7156 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7157 [Verbose] > │ and closure110 () () : UH1 =                                                 │
00:00:31 #7158 [Verbose] > │     let v0 : (unit -> UH1) = closure111()                                    │
00:00:31 #7159 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.46, 0.0018854742084416021, 0.0, 0.0, 0.0,  │
00:00:31 #7160 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7161 [Verbose] > │ and closure109 () () : UH1 =                                                 │
00:00:31 #7162 [Verbose] > │     let v0 : (unit -> UH1) = closure110()                                    │
00:00:31 #7163 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.45, 0.0011965783214377866, 0.0, 0.0, 0.0,  │
00:00:31 #7164 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7165 [Verbose] > │ and closure108 () () : UH1 =                                                 │
00:00:31 #7166 [Verbose] > │     let v0 : (unit -> UH1) = closure109()                                    │
00:00:31 #7167 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.44, 0.0004825696045725713, 0.0, 0.0, 0.0,  │
00:00:31 #7168 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7169 [Verbose] > │ and closure107 () () : UH1 =                                                 │
00:00:31 #7170 [Verbose] > │     let v0 : (unit -> UH1) = closure108()                                    │
00:00:31 #7171 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.43, -0.00024156689762753724, 0.0, 0.0,     │
00:00:31 #7172 [Verbose] > │ 0.0, 0.0, 0.0, v0)                                                           │
00:00:31 #7173 [Verbose] > │ and closure106 () () : UH1 =                                                 │
00:00:31 #7174 [Verbose] > │     let v0 : (unit -> UH1) = closure107()                                    │
00:00:31 #7175 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.42000000000000004, -0.0009606335867685414, │
00:00:31 #7176 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7177 [Verbose] > │ and closure105 () () : UH1 =                                                 │
00:00:31 #7178 [Verbose] > │     let v0 : (unit -> UH1) = closure106()                                    │
00:00:31 #7179 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.41000000000000003, -0.0016595392656426435, │
00:00:31 #7180 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7181 [Verbose] > │ and closure104 () () : UH1 =                                                 │
00:00:31 #7182 [Verbose] > │     let v0 : (unit -> UH1) = closure105()                                    │
00:00:31 #7183 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.4, -0.002323615860218846, 0.0, 0.0, 0.0,   │
00:00:31 #7184 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7185 [Verbose] > │ and closure103 () () : UH1 =                                                 │
00:00:31 #7186 [Verbose] > │     let v0 : (unit -> UH1) = closure104()                                    │
00:00:31 #7187 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.39, -0.002938926261462367, 0.0, 0.0, 0.0,  │
00:00:31 #7188 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7189 [Verbose] > │ and closure102 () () : UH1 =                                                 │
00:00:31 #7190 [Verbose] > │     let v0 : (unit -> UH1) = closure103()                                    │
00:00:31 #7191 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.38, -0.0034925568262446837, 0.0, 0.0, 0.0, │
00:00:31 #7192 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7193 [Verbose] > │ and closure101 () () : UH1 =                                                 │
00:00:31 #7194 [Verbose] > │     let v0 : (unit -> UH1) = closure102()                                    │
00:00:31 #7195 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.37, -0.003972888398568774, 0.0, 0.0, 0.0,  │
00:00:31 #7196 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7197 [Verbose] > │ and closure100 () () : UH1 =                                                 │
00:00:31 #7198 [Verbose] > │     let v0 : (unit -> UH1) = closure101()                                    │
00:00:31 #7199 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.36000000000000004, -0.004369840163132589,  │
00:00:31 #7200 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7201 [Verbose] > │ and closure99 () () : UH1 =                                                  │
00:00:31 #7202 [Verbose] > │     let v0 : (unit -> UH1) = closure100()                                    │
00:00:31 #7203 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.35000000000000003, -0.004675081213427074,  │
00:00:31 #7204 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7205 [Verbose] > │ and closure98 () () : UH1 =                                                  │
00:00:31 #7206 [Verbose] > │     let v0 : (unit -> UH1) = closure99()                                     │
00:00:31 #7207 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.34, -0.004882205394146361, 0.0, 0.0, 0.0,  │
00:00:31 #7208 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7209 [Verbose] > │ and closure97 () () : UH1 =                                                  │
00:00:31 #7210 [Verbose] > │     let v0 : (unit -> UH1) = closure98()                                     │
00:00:31 #7211 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.33, -0.004986865748457456, 0.0, 0.0, 0.0,  │
00:00:31 #7212 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7213 [Verbose] > │ and closure96 () () : UH1 =                                                  │
00:00:31 #7214 [Verbose] > │     let v0 : (unit -> UH1) = closure97()                                     │
00:00:31 #7215 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.32, -0.004986865748457456, 0.0, 0.0, 0.0,  │
00:00:31 #7216 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7217 [Verbose] > │ and closure95 () () : UH1 =                                                  │
00:00:31 #7218 [Verbose] > │     let v0 : (unit -> UH1) = closure96()                                     │
00:00:31 #7219 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.31, -0.004882205394146359, 0.0, 0.0, 0.0,  │
00:00:31 #7220 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7221 [Verbose] > │ and closure94 () () : UH1 =                                                  │
00:00:31 #7222 [Verbose] > │     let v0 : (unit -> UH1) = closure95()                                     │
00:00:31 #7223 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.3, -0.004675081213427074, 0.0, 0.0, 0.0,   │
00:00:31 #7224 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7225 [Verbose] > │ and closure93 () () : UH1 =                                                  │
00:00:31 #7226 [Verbose] > │     let v0 : (unit -> UH1) = closure94()                                     │
00:00:31 #7227 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.29000000000000004, -0.00436984016313259,   │
00:00:31 #7228 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7229 [Verbose] > │ and closure92 () () : UH1 =                                                  │
00:00:31 #7230 [Verbose] > │     let v0 : (unit -> UH1) = closure93()                                     │
00:00:31 #7231 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.28, -0.003972888398568771, 0.0, 0.0, 0.0,  │
00:00:31 #7232 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7233 [Verbose] > │ and closure91 () () : UH1 =                                                  │
00:00:31 #7234 [Verbose] > │     let v0 : (unit -> UH1) = closure92()                                     │
00:00:31 #7235 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.27, -0.003492556826244686, 0.0, 0.0, 0.0,  │
00:00:31 #7236 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7237 [Verbose] > │ and closure90 () () : UH1 =                                                  │
00:00:31 #7238 [Verbose] > │     let v0 : (unit -> UH1) = closure91()                                     │
00:00:31 #7239 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.26, -0.0029389262614623636, 0.0, 0.0, 0.0, │
00:00:31 #7240 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7241 [Verbose] > │ and closure89 () () : UH1 =                                                  │
00:00:31 #7242 [Verbose] > │     let v0 : (unit -> UH1) = closure90()                                     │
00:00:31 #7243 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.25, -0.002323615860218842, 0.0, 0.0, 0.0,  │
00:00:31 #7244 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7245 [Verbose] > │ and closure88 () () : UH1 =                                                  │
00:00:31 #7246 [Verbose] > │     let v0 : (unit -> UH1) = closure89()                                     │
00:00:31 #7247 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.24000000000000002, -0.001659539265642642,  │
00:00:31 #7248 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7249 [Verbose] > │ and closure87 () () : UH1 =                                                  │
00:00:31 #7250 [Verbose] > │     let v0 : (unit -> UH1) = closure88()                                     │
00:00:31 #7251 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.23, -0.0009606335867685418, 0.0, 0.0, 0.0, │
00:00:31 #7252 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7253 [Verbose] > │ and closure86 () () : UH1 =                                                  │
00:00:31 #7254 [Verbose] > │     let v0 : (unit -> UH1) = closure87()                                     │
00:00:31 #7255 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.22, -0.00024156689762753317, 0.0, 0.0,     │
00:00:31 #7256 [Verbose] > │ 0.0, 0.0, 0.0, v0)                                                           │
00:00:31 #7257 [Verbose] > │ and closure85 () () : UH1 =                                                  │
00:00:31 #7258 [Verbose] > │     let v0 : (unit -> UH1) = closure86()                                     │
00:00:31 #7259 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.21000000000000002, 0.00048256960457257535, │
00:00:31 #7260 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7261 [Verbose] > │ and closure84 () () : UH1 =                                                  │
00:00:31 #7262 [Verbose] > │     let v0 : (unit -> UH1) = closure85()                                     │
00:00:31 #7263 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.2, 0.0011965783214377905, 0.0, 0.0, 0.0,   │
00:00:31 #7264 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7265 [Verbose] > │ and closure83 () () : UH1 =                                                  │
00:00:31 #7266 [Verbose] > │     let v0 : (unit -> UH1) = closure84()                                     │
00:00:31 #7267 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.19, 0.0018854742084416015, 0.0, 0.0, 0.0,  │
00:00:31 #7268 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7269 [Verbose] > │ and closure82 () () : UH1 =                                                  │
00:00:31 #7270 [Verbose] > │     let v0 : (unit -> UH1) = closure83()                                     │
00:00:31 #7271 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.18000000000000002, 0.002534799269067951,   │
00:00:31 #7272 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7273 [Verbose] > │ and closure81 () () : UH1 =                                                  │
00:00:31 #7274 [Verbose] > │     let v0 : (unit -> UH1) = closure82()                                     │
00:00:31 #7275 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.17, 0.0031309259876915697, 0.0, 0.0, 0.0,  │
00:00:31 #7276 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7277 [Verbose] > │ and closure80 () () : UH1 =                                                  │
00:00:31 #7278 [Verbose] > │     let v0 : (unit -> UH1) = closure81()                                     │
00:00:31 #7279 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.16, 0.0036613433329888666, 0.0, 0.0, 0.0,  │
00:00:31 #7280 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7281 [Verbose] > │ and closure79 () () : UH1 =                                                  │
00:00:31 #7282 [Verbose] > │     let v0 : (unit -> UH1) = closure80()                                     │
00:00:31 #7283 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.15000000000000002, 0.0041149193294682815,  │
00:00:31 #7284 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7285 [Verbose] > │ and closure78 () () : UH1 =                                                  │
00:00:31 #7286 [Verbose] > │     let v0 : (unit -> UH1) = closure79()                                     │
00:00:31 #7287 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.14, 0.004482134686478519, 0.0, 0.0, 0.0,   │
00:00:31 #7288 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7289 [Verbose] > │ and closure77 () () : UH1 =                                                  │
00:00:31 #7290 [Verbose] > │     let v0 : (unit -> UH1) = closure78()                                     │
00:00:31 #7291 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.13, 0.004755282581475768, 0.0, 0.0, 0.0,   │
00:00:31 #7292 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7293 [Verbose] > │ and closure76 () () : UH1 =                                                  │
00:00:31 #7294 [Verbose] > │     let v0 : (unit -> UH1) = closure77()                                     │
00:00:31 #7295 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.12, 0.004928630404658255, 0.0, 0.0, 0.0,   │
00:00:31 #7296 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7297 [Verbose] > │ and closure75 () () : UH1 =                                                  │
00:00:31 #7298 [Verbose] > │     let v0 : (unit -> UH1) = closure76()                                     │
00:00:31 #7299 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.11, 0.004998540070400965, 0.0, 0.0, 0.0,   │
00:00:31 #7300 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7301 [Verbose] > │ and closure74 () () : UH1 =                                                  │
00:00:31 #7302 [Verbose] > │     let v0 : (unit -> UH1) = closure75()                                     │
00:00:31 #7303 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.09999999999999999, 0.00496354437049027,    │
00:00:31 #7304 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7305 [Verbose] > │ and closure73 () () : UH1 =                                                  │
00:00:31 #7306 [Verbose] > │     let v0 : (unit -> UH1) = closure74()                                     │
00:00:31 #7307 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.09, 0.004824377766717757, 0.0, 0.0, 0.0,   │
00:00:31 #7308 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7309 [Verbose] > │ and closure72 () () : UH1 =                                                  │
00:00:31 #7310 [Verbose] > │     let v0 : (unit -> UH1) = closure73()                                     │
00:00:31 #7311 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.08, 0.004583960976582912, 0.0, 0.0, 0.0,   │
00:00:31 #7312 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7313 [Verbose] > │ and closure71 () () : UH1 =                                                  │
00:00:31 #7314 [Verbose] > │     let v0 : (unit -> UH1) = closure72()                                     │
00:00:31 #7315 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.06999999999999999, 0.004247339675607605,   │
00:00:31 #7316 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7317 [Verbose] > │ and closure70 () () : UH1 =                                                  │
00:00:31 #7318 [Verbose] > │     let v0 : (unit -> UH1) = closure71()                                     │
00:00:31 #7319 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.060000000000000005, 0.0038215786027292415, │
00:00:31 #7320 [Verbose] > │ 0.0, 0.0, 0.0, 0.0, 0.0, v0)                                                 │
00:00:31 #7321 [Verbose] > │ and closure69 () () : UH1 =                                                  │
00:00:31 #7322 [Verbose] > │     let v0 : (unit -> UH1) = closure70()                                     │
00:00:31 #7323 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.05, 0.0033156132912039757, 0.0, 0.0, 0.0,  │
00:00:31 #7324 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7325 [Verbose] > │ and closure68 () () : UH1 =                                                  │
00:00:31 #7326 [Verbose] > │     let v0 : (unit -> UH1) = closure69()                                     │
00:00:31 #7327 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.04, 0.00274006253677335, 0.0, 0.0, 0.0,    │
00:00:31 #7328 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7329 [Verbose] > │ and closure67 () () : UH1 =                                                  │
00:00:31 #7330 [Verbose] > │     let v0 : (unit -> UH1) = closure68()                                     │
00:00:31 #7331 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.03, 0.0021070055388626454, 0.0, 0.0, 0.0,  │
00:00:31 #7332 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7333 [Verbose] > │ and closure66 () () : UH1 =                                                  │
00:00:31 #7334 [Verbose] > │     let v0 : (unit -> UH1) = closure67()                                     │
00:00:31 #7335 [Verbose] > │     UH1_0(0.0, 8.422578125E-06, 0.02, 0.0014297283919934465, 0.0, 0.0, 0.0,  │
00:00:31 #7336 [Verbose] > │ 0.0, 0.0, v0)                                                                │
00:00:31 #7337 [Verbose] > │ and closure132 (v0 : (unit -> UH1), v1 : (unit -> UH3)) () : UH1 =           │
00:00:31 #7338 [Verbose] > │     let v2 : UH3 = v1 ()                                                     │
00:00:31 #7339 [Verbose] > │     let v3 : UH1 = v0 ()                                                     │
00:00:31 #7340 [Verbose] > │     match v2 with                                                            │
00:00:31 #7341 [Verbose] > │     | UH3_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *)  │
00:00:31 #7342 [Verbose] > │         match v3 with                                                        │
00:00:31 #7343 [Verbose] > │         | UH1_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (*      │
00:00:31 #7344 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7345 [Verbose] > │             let v24 : float = v9 * 1.25E-05                                  │
00:00:31 #7346 [Verbose] > │             let v25 : float = v19 + v24                                      │
00:00:31 #7347 [Verbose] > │             let v26 : float = 1.25E-05 * v6                                  │
00:00:31 #7348 [Verbose] > │             let v27 : float = 1.25E-05 * v7                                  │
00:00:31 #7349 [Verbose] > │             let v28 : float = 1.25E-05 * v8                                  │
00:00:31 #7350 [Verbose] > │             let v29 : float = v16 + v26                                      │
00:00:31 #7351 [Verbose] > │             let v30 : float = v17 + v27                                      │
00:00:31 #7352 [Verbose] > │             let v31 : float = v18 + v28                                      │
00:00:31 #7353 [Verbose] > │             let v32 : float = 1.25E-05 * v10                                 │
00:00:31 #7354 [Verbose] > │             let v33 : float = 1.25E-05 * v11                                 │
00:00:31 #7355 [Verbose] > │             let v34 : float = 1.25E-05 * v12                                 │
00:00:31 #7356 [Verbose] > │             let v35 : float = v20 + v32                                      │
00:00:31 #7357 [Verbose] > │             let v36 : float = v21 + v33                                      │
00:00:31 #7358 [Verbose] > │             let v37 : float = v22 + v34                                      │
00:00:31 #7359 [Verbose] > │             let v38 : (unit -> UH1) = closure132(v23, v13)                   │
00:00:31 #7360 [Verbose] > │             UH1_0(v14, v15, v29, v30, v31, v25, v35, v36, v37, v38)          │
00:00:31 #7361 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:31 #7362 [Verbose] > │             UH1_1                                                            │
00:00:31 #7363 [Verbose] > │     | UH3_1 -> (* StreamNil *)                                               │
00:00:31 #7364 [Verbose] > │         UH1_1                                                                │
00:00:31 #7365 [Verbose] > │ and closure133 (v0 : UH1) () : UH1 =                                         │
00:00:31 #7366 [Verbose] > │     v0                                                                       │
00:00:31 #7367 [Verbose] > │ and closure134 (v0 : UH1, v1 : Mut0) () : UH1 =                              │
00:00:31 #7368 [Verbose] > │     let v2 : US0 = v1.l0                                                     │
00:00:31 #7369 [Verbose] > │     match v2 with                                                            │
00:00:31 #7370 [Verbose] > │     | US0_0(v3) -> (* Computed *)                                            │
00:00:31 #7371 [Verbose] > │         v3                                                                   │
00:00:31 #7372 [Verbose] > │     | US0_1(v4) -> (* NotComputed *)                                         │
00:00:31 #7373 [Verbose] > │         let v5 : UH1 = v4 ()                                                 │
00:00:31 #7374 [Verbose] > │         let v20 : UH1 =                                                      │
00:00:31 #7375 [Verbose] > │             match v5 with                                                    │
00:00:31 #7376 [Verbose] > │             | UH1_0(v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) -> (*     │
00:00:31 #7377 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7378 [Verbose] > │                 let v17 : (unit -> UH1) = method3(v0, v16)                   │
00:00:31 #7379 [Verbose] > │                 UH1_0(v7, v8, v9, v10, v11, v12, v13, v14, v15, v17)         │
00:00:31 #7380 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:31 #7381 [Verbose] > │                 UH1_1                                                        │
00:00:31 #7382 [Verbose] > │         let v21 : US0 = US0_0(v20)                                           │
00:00:31 #7383 [Verbose] > │         v1.l0 <- v21                                                         │
00:00:31 #7384 [Verbose] > │         v20                                                                  │
00:00:31 #7385 [Verbose] > │ and method3 (v0 : UH1, v1 : (unit -> UH1)) : (unit -> UH1) =                 │
00:00:31 #7386 [Verbose] > │     let v2 : US0 = US0_1(v1)                                                 │
00:00:31 #7387 [Verbose] > │     let v3 : Mut0 = {l0 = v2} : Mut0                                         │
00:00:31 #7388 [Verbose] > │     closure134(v0, v3)                                                       │
00:00:31 #7389 [Verbose] > │ and closure135 (v0 : (unit -> UH1), v1 : (unit -> UH3)) () : UH1 =           │
00:00:31 #7390 [Verbose] > │     let v2 : UH3 = v1 ()                                                     │
00:00:31 #7391 [Verbose] > │     let v3 : UH1 = v0 ()                                                     │
00:00:31 #7392 [Verbose] > │     match v2 with                                                            │
00:00:31 #7393 [Verbose] > │     | UH3_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *)  │
00:00:31 #7394 [Verbose] > │         match v3 with                                                        │
00:00:31 #7395 [Verbose] > │         | UH1_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (*      │
00:00:31 #7396 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7397 [Verbose] > │             let v24 : float = v9 * 2.5E-05                                   │
00:00:31 #7398 [Verbose] > │             let v25 : float = v19 + v24                                      │
00:00:31 #7399 [Verbose] > │             let v26 : float = 2.5E-05 * v6                                   │
00:00:31 #7400 [Verbose] > │             let v27 : float = 2.5E-05 * v7                                   │
00:00:31 #7401 [Verbose] > │             let v28 : float = 2.5E-05 * v8                                   │
00:00:31 #7402 [Verbose] > │             let v29 : float = v16 + v26                                      │
00:00:31 #7403 [Verbose] > │             let v30 : float = v17 + v27                                      │
00:00:31 #7404 [Verbose] > │             let v31 : float = v18 + v28                                      │
00:00:31 #7405 [Verbose] > │             let v32 : float = 2.5E-05 * v10                                  │
00:00:31 #7406 [Verbose] > │             let v33 : float = 2.5E-05 * v11                                  │
00:00:31 #7407 [Verbose] > │             let v34 : float = 2.5E-05 * v12                                  │
00:00:31 #7408 [Verbose] > │             let v35 : float = v20 + v32                                      │
00:00:31 #7409 [Verbose] > │             let v36 : float = v21 + v33                                      │
00:00:31 #7410 [Verbose] > │             let v37 : float = v22 + v34                                      │
00:00:31 #7411 [Verbose] > │             let v38 : (unit -> UH1) = closure135(v23, v13)                   │
00:00:31 #7412 [Verbose] > │             UH1_0(v14, v15, v29, v30, v31, v25, v35, v36, v37, v38)          │
00:00:31 #7413 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:31 #7414 [Verbose] > │             UH1_1                                                            │
00:00:31 #7415 [Verbose] > │     | UH3_1 -> (* StreamNil *)                                               │
00:00:31 #7416 [Verbose] > │         UH1_1                                                                │
00:00:31 #7417 [Verbose] > │ and closure136 (v0 : (unit -> UH3), v1 : (unit -> UH3)) () : UH3 =           │
00:00:31 #7418 [Verbose] > │     let v2 : UH3 = v1 ()                                                     │
00:00:31 #7419 [Verbose] > │     let v3 : UH3 = v0 ()                                                     │
00:00:31 #7420 [Verbose] > │     match v2 with                                                            │
00:00:31 #7421 [Verbose] > │     | UH3_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *)  │
00:00:31 #7422 [Verbose] > │         match v3 with                                                        │
00:00:31 #7423 [Verbose] > │         | UH3_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (*      │
00:00:31 #7424 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7425 [Verbose] > │             let v24 : float = v4 + v14                                       │
00:00:31 #7426 [Verbose] > │             let v25 : float = v5 + v15                                       │
00:00:31 #7427 [Verbose] > │             let v26 : float = v9 + v19                                       │
00:00:31 #7428 [Verbose] > │             let v27 : float = v6 + v16                                       │
00:00:31 #7429 [Verbose] > │             let v28 : float = v7 + v17                                       │
00:00:31 #7430 [Verbose] > │             let v29 : float = v8 + v18                                       │
00:00:31 #7431 [Verbose] > │             let v30 : float = v10 + v20                                      │
00:00:31 #7432 [Verbose] > │             let v31 : float = v11 + v21                                      │
00:00:31 #7433 [Verbose] > │             let v32 : float = v12 + v22                                      │
00:00:31 #7434 [Verbose] > │             let v33 : (unit -> UH3) = closure136(v23, v13)                   │
00:00:31 #7435 [Verbose] > │             UH3_0(v24, v25, v27, v28, v29, v26, v30, v31, v32, v33)          │
00:00:31 #7436 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7437 [Verbose] > │             UH3_1                                                            │
00:00:31 #7438 [Verbose] > │     | UH3_1 -> (* StreamNil *)                                               │
00:00:31 #7439 [Verbose] > │         UH3_1                                                                │
00:00:31 #7440 [Verbose] > │ and closure137 (v0 : (unit -> UH1), v1 : (unit -> UH3)) () : UH1 =           │
00:00:31 #7441 [Verbose] > │     let v2 : UH3 = v1 ()                                                     │
00:00:31 #7442 [Verbose] > │     let v3 : UH1 = v0 ()                                                     │
00:00:31 #7443 [Verbose] > │     match v2 with                                                            │
00:00:31 #7444 [Verbose] > │     | UH3_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -> (* StreamCons *)  │
00:00:31 #7445 [Verbose] > │         match v3 with                                                        │
00:00:31 #7446 [Verbose] > │         | UH1_0(v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -> (*      │
00:00:31 #7447 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7448 [Verbose] > │             let v24 : float = v9 * 4.166666666666667E-06                     │
00:00:31 #7449 [Verbose] > │             let v25 : float = v19 + v24                                      │
00:00:31 #7450 [Verbose] > │             let v26 : float = 4.166666666666667E-06 * v6                     │
00:00:31 #7451 [Verbose] > │             let v27 : float = 4.166666666666667E-06 * v7                     │
00:00:31 #7452 [Verbose] > │             let v28 : float = 4.166666666666667E-06 * v8                     │
00:00:31 #7453 [Verbose] > │             let v29 : float = v16 + v26                                      │
00:00:31 #7454 [Verbose] > │             let v30 : float = v17 + v27                                      │
00:00:31 #7455 [Verbose] > │             let v31 : float = v18 + v28                                      │
00:00:31 #7456 [Verbose] > │             let v32 : float = 4.166666666666667E-06 * v10                    │
00:00:31 #7457 [Verbose] > │             let v33 : float = 4.166666666666667E-06 * v11                    │
00:00:31 #7458 [Verbose] > │             let v34 : float = 4.166666666666667E-06 * v12                    │
00:00:31 #7459 [Verbose] > │             let v35 : float = v20 + v32                                      │
00:00:31 #7460 [Verbose] > │             let v36 : float = v21 + v33                                      │
00:00:31 #7461 [Verbose] > │             let v37 : float = v22 + v34                                      │
00:00:31 #7462 [Verbose] > │             let v38 : (unit -> UH1) = closure137(v23, v13)                   │
00:00:31 #7463 [Verbose] > │             UH1_0(v14, v15, v29, v30, v31, v25, v35, v36, v37, v38)          │
00:00:31 #7464 [Verbose] > │         | UH1_1 -> (* StreamNil *)                                           │
00:00:31 #7465 [Verbose] > │             UH1_1                                                            │
00:00:31 #7466 [Verbose] > │     | UH3_1 -> (* StreamNil *)                                               │
00:00:31 #7467 [Verbose] > │         UH1_1                                                                │
00:00:31 #7468 [Verbose] > │ and closure131 (v0 : (UH1 -> UH3)) (v1 : UH1) : UH1 =                        │
00:00:31 #7469 [Verbose] > │     let v2 : UH3 = v0 v1                                                     │
00:00:31 #7470 [Verbose] > │     let v44 : UH1 =                                                          │
00:00:31 #7471 [Verbose] > │         match v2 with                                                        │
00:00:31 #7472 [Verbose] > │         | UH3_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons  │
00:00:31 #7473 [Verbose] > │ *)                                                                           │
00:00:31 #7474 [Verbose] > │             match v1 with                                                    │
00:00:31 #7475 [Verbose] > │             | UH1_0(v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) -> (*  │
00:00:31 #7476 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7477 [Verbose] > │                 let v23 : float = v8 * 1.25E-05                              │
00:00:31 #7478 [Verbose] > │                 let v24 : float = v18 + v23                                  │
00:00:31 #7479 [Verbose] > │                 let v25 : float = 1.25E-05 * v5                              │
00:00:31 #7480 [Verbose] > │                 let v26 : float = 1.25E-05 * v6                              │
00:00:31 #7481 [Verbose] > │                 let v27 : float = 1.25E-05 * v7                              │
00:00:31 #7482 [Verbose] > │                 let v28 : float = v15 + v25                                  │
00:00:31 #7483 [Verbose] > │                 let v29 : float = v16 + v26                                  │
00:00:31 #7484 [Verbose] > │                 let v30 : float = v17 + v27                                  │
00:00:31 #7485 [Verbose] > │                 let v31 : float = 1.25E-05 * v9                              │
00:00:31 #7486 [Verbose] > │                 let v32 : float = 1.25E-05 * v10                             │
00:00:31 #7487 [Verbose] > │                 let v33 : float = 1.25E-05 * v11                             │
00:00:31 #7488 [Verbose] > │                 let v34 : float = v19 + v31                                  │
00:00:31 #7489 [Verbose] > │                 let v35 : float = v20 + v32                                  │
00:00:31 #7490 [Verbose] > │                 let v36 : float = v21 + v33                                  │
00:00:31 #7491 [Verbose] > │                 let v37 : (unit -> UH1) = closure132(v22, v12)               │
00:00:31 #7492 [Verbose] > │                 UH1_0(v13, v14, v28, v29, v30, v24, v34, v35, v36, v37)      │
00:00:31 #7493 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:31 #7494 [Verbose] > │                 UH1_1                                                        │
00:00:31 #7495 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7496 [Verbose] > │             UH1_1                                                            │
00:00:31 #7497 [Verbose] > │     let v45 : (unit -> UH1) = closure133(v44)                                │
00:00:31 #7498 [Verbose] > │     let v46 : (unit -> UH1) = method3(v44, v45)                              │
00:00:31 #7499 [Verbose] > │     let v47 : UH1 = v46 ()                                                   │
00:00:31 #7500 [Verbose] > │     let v48 : UH3 = v0 v47                                                   │
00:00:31 #7501 [Verbose] > │     let v90 : UH1 =                                                          │
00:00:31 #7502 [Verbose] > │         match v48 with                                                       │
00:00:31 #7503 [Verbose] > │         | UH3_0(v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) -> (*      │
00:00:31 #7504 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7505 [Verbose] > │             match v1 with                                                    │
00:00:31 #7506 [Verbose] > │             | UH1_0(v59, v60, v61, v62, v63, v64, v65, v66, v67, v68) -> (*  │
00:00:31 #7507 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7508 [Verbose] > │                 let v69 : float = v54 * 1.25E-05                             │
00:00:31 #7509 [Verbose] > │                 let v70 : float = v64 + v69                                  │
00:00:31 #7510 [Verbose] > │                 let v71 : float = 1.25E-05 * v51                             │
00:00:31 #7511 [Verbose] > │                 let v72 : float = 1.25E-05 * v52                             │
00:00:31 #7512 [Verbose] > │                 let v73 : float = 1.25E-05 * v53                             │
00:00:31 #7513 [Verbose] > │                 let v74 : float = v61 + v71                                  │
00:00:31 #7514 [Verbose] > │                 let v75 : float = v62 + v72                                  │
00:00:31 #7515 [Verbose] > │                 let v76 : float = v63 + v73                                  │
00:00:31 #7516 [Verbose] > │                 let v77 : float = 1.25E-05 * v55                             │
00:00:31 #7517 [Verbose] > │                 let v78 : float = 1.25E-05 * v56                             │
00:00:31 #7518 [Verbose] > │                 let v79 : float = 1.25E-05 * v57                             │
00:00:31 #7519 [Verbose] > │                 let v80 : float = v65 + v77                                  │
00:00:31 #7520 [Verbose] > │                 let v81 : float = v66 + v78                                  │
00:00:31 #7521 [Verbose] > │                 let v82 : float = v67 + v79                                  │
00:00:31 #7522 [Verbose] > │                 let v83 : (unit -> UH1) = closure132(v68, v58)               │
00:00:31 #7523 [Verbose] > │                 UH1_0(v59, v60, v74, v75, v76, v70, v80, v81, v82, v83)      │
00:00:31 #7524 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:31 #7525 [Verbose] > │                 UH1_1                                                        │
00:00:31 #7526 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7527 [Verbose] > │             UH1_1                                                            │
00:00:31 #7528 [Verbose] > │     let v91 : (unit -> UH1) = closure133(v90)                                │
00:00:31 #7529 [Verbose] > │     let v92 : (unit -> UH1) = method3(v90, v91)                              │
00:00:31 #7530 [Verbose] > │     let v93 : UH1 = v92 ()                                                   │
00:00:31 #7531 [Verbose] > │     let v94 : UH3 = v0 v93                                                   │
00:00:31 #7532 [Verbose] > │     let v136 : UH1 =                                                         │
00:00:31 #7533 [Verbose] > │         match v94 with                                                       │
00:00:31 #7534 [Verbose] > │         | UH3_0(v95, v96, v97, v98, v99, v100, v101, v102, v103, v104) -> (* │
00:00:31 #7535 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #7536 [Verbose] > │             match v1 with                                                    │
00:00:31 #7537 [Verbose] > │             | UH1_0(v105, v106, v107, v108, v109, v110, v111, v112, v113,    │
00:00:31 #7538 [Verbose] > │ v114) -> (* StreamCons *)                                                    │
00:00:31 #7539 [Verbose] > │                 let v115 : float = v100 * 2.5E-05                            │
00:00:31 #7540 [Verbose] > │                 let v116 : float = v110 + v115                               │
00:00:31 #7541 [Verbose] > │                 let v117 : float = 2.5E-05 * v97                             │
00:00:31 #7542 [Verbose] > │                 let v118 : float = 2.5E-05 * v98                             │
00:00:31 #7543 [Verbose] > │                 let v119 : float = 2.5E-05 * v99                             │
00:00:31 #7544 [Verbose] > │                 let v120 : float = v107 + v117                               │
00:00:31 #7545 [Verbose] > │                 let v121 : float = v108 + v118                               │
00:00:31 #7546 [Verbose] > │                 let v122 : float = v109 + v119                               │
00:00:31 #7547 [Verbose] > │                 let v123 : float = 2.5E-05 * v101                            │
00:00:31 #7548 [Verbose] > │                 let v124 : float = 2.5E-05 * v102                            │
00:00:31 #7549 [Verbose] > │                 let v125 : float = 2.5E-05 * v103                            │
00:00:31 #7550 [Verbose] > │                 let v126 : float = v111 + v123                               │
00:00:31 #7551 [Verbose] > │                 let v127 : float = v112 + v124                               │
00:00:31 #7552 [Verbose] > │                 let v128 : float = v113 + v125                               │
00:00:31 #7553 [Verbose] > │                 let v129 : (unit -> UH1) = closure135(v114, v104)            │
00:00:31 #7554 [Verbose] > │                 UH1_0(v105, v106, v120, v121, v122, v116, v126, v127, v128,  │
00:00:31 #7555 [Verbose] > │ v129)                                                                        │
00:00:31 #7556 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:31 #7557 [Verbose] > │                 UH1_1                                                        │
00:00:31 #7558 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7559 [Verbose] > │             UH1_1                                                            │
00:00:31 #7560 [Verbose] > │     let v137 : (unit -> UH1) = closure133(v136)                              │
00:00:31 #7561 [Verbose] > │     let v138 : (unit -> UH1) = method3(v136, v137)                           │
00:00:31 #7562 [Verbose] > │     let v139 : UH1 = v138 ()                                                 │
00:00:31 #7563 [Verbose] > │     let v140 : UH3 = v0 v139                                                 │
00:00:31 #7564 [Verbose] > │     let v177 : UH3 =                                                         │
00:00:31 #7565 [Verbose] > │         match v2 with                                                        │
00:00:31 #7566 [Verbose] > │         | UH3_0(v141, v142, v143, v144, v145, v146, v147, v148, v149, v150)  │
00:00:31 #7567 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:31 #7568 [Verbose] > │             match v48 with                                                   │
00:00:31 #7569 [Verbose] > │             | UH3_0(v151, v152, v153, v154, v155, v156, v157, v158, v159,    │
00:00:31 #7570 [Verbose] > │ v160) -> (* StreamCons *)                                                    │
00:00:31 #7571 [Verbose] > │                 let v161 : float = v141 + v151                               │
00:00:31 #7572 [Verbose] > │                 let v162 : float = v142 + v152                               │
00:00:31 #7573 [Verbose] > │                 let v163 : float = v146 + v156                               │
00:00:31 #7574 [Verbose] > │                 let v164 : float = v143 + v153                               │
00:00:31 #7575 [Verbose] > │                 let v165 : float = v144 + v154                               │
00:00:31 #7576 [Verbose] > │                 let v166 : float = v145 + v155                               │
00:00:31 #7577 [Verbose] > │                 let v167 : float = v147 + v157                               │
00:00:31 #7578 [Verbose] > │                 let v168 : float = v148 + v158                               │
00:00:31 #7579 [Verbose] > │                 let v169 : float = v149 + v159                               │
00:00:31 #7580 [Verbose] > │                 let v170 : (unit -> UH3) = closure136(v160, v150)            │
00:00:31 #7581 [Verbose] > │                 UH3_0(v161, v162, v164, v165, v166, v163, v167, v168, v169,  │
00:00:31 #7582 [Verbose] > │ v170)                                                                        │
00:00:31 #7583 [Verbose] > │             | UH3_1 -> (* StreamNil *)                                       │
00:00:31 #7584 [Verbose] > │                 UH3_1                                                        │
00:00:31 #7585 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7586 [Verbose] > │             UH3_1                                                            │
00:00:31 #7587 [Verbose] > │     let v214 : UH3 =                                                         │
00:00:31 #7588 [Verbose] > │         match v177 with                                                      │
00:00:31 #7589 [Verbose] > │         | UH3_0(v178, v179, v180, v181, v182, v183, v184, v185, v186, v187)  │
00:00:31 #7590 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:31 #7591 [Verbose] > │             match v48 with                                                   │
00:00:31 #7592 [Verbose] > │             | UH3_0(v188, v189, v190, v191, v192, v193, v194, v195, v196,    │
00:00:31 #7593 [Verbose] > │ v197) -> (* StreamCons *)                                                    │
00:00:31 #7594 [Verbose] > │                 let v198 : float = v178 + v188                               │
00:00:31 #7595 [Verbose] > │                 let v199 : float = v179 + v189                               │
00:00:31 #7596 [Verbose] > │                 let v200 : float = v183 + v193                               │
00:00:31 #7597 [Verbose] > │                 let v201 : float = v180 + v190                               │
00:00:31 #7598 [Verbose] > │                 let v202 : float = v181 + v191                               │
00:00:31 #7599 [Verbose] > │                 let v203 : float = v182 + v192                               │
00:00:31 #7600 [Verbose] > │                 let v204 : float = v184 + v194                               │
00:00:31 #7601 [Verbose] > │                 let v205 : float = v185 + v195                               │
00:00:31 #7602 [Verbose] > │                 let v206 : float = v186 + v196                               │
00:00:31 #7603 [Verbose] > │                 let v207 : (unit -> UH3) = closure136(v197, v187)            │
00:00:31 #7604 [Verbose] > │                 UH3_0(v198, v199, v201, v202, v203, v200, v204, v205, v206,  │
00:00:31 #7605 [Verbose] > │ v207)                                                                        │
00:00:31 #7606 [Verbose] > │             | UH3_1 -> (* StreamNil *)                                       │
00:00:31 #7607 [Verbose] > │                 UH3_1                                                        │
00:00:31 #7608 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7609 [Verbose] > │             UH3_1                                                            │
00:00:31 #7610 [Verbose] > │     let v251 : UH3 =                                                         │
00:00:31 #7611 [Verbose] > │         match v214 with                                                      │
00:00:31 #7612 [Verbose] > │         | UH3_0(v215, v216, v217, v218, v219, v220, v221, v222, v223, v224)  │
00:00:31 #7613 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:31 #7614 [Verbose] > │             match v94 with                                                   │
00:00:31 #7615 [Verbose] > │             | UH3_0(v225, v226, v227, v228, v229, v230, v231, v232, v233,    │
00:00:31 #7616 [Verbose] > │ v234) -> (* StreamCons *)                                                    │
00:00:31 #7617 [Verbose] > │                 let v235 : float = v215 + v225                               │
00:00:31 #7618 [Verbose] > │                 let v236 : float = v216 + v226                               │
00:00:31 #7619 [Verbose] > │                 let v237 : float = v220 + v230                               │
00:00:31 #7620 [Verbose] > │                 let v238 : float = v217 + v227                               │
00:00:31 #7621 [Verbose] > │                 let v239 : float = v218 + v228                               │
00:00:31 #7622 [Verbose] > │                 let v240 : float = v219 + v229                               │
00:00:31 #7623 [Verbose] > │                 let v241 : float = v221 + v231                               │
00:00:31 #7624 [Verbose] > │                 let v242 : float = v222 + v232                               │
00:00:31 #7625 [Verbose] > │                 let v243 : float = v223 + v233                               │
00:00:31 #7626 [Verbose] > │                 let v244 : (unit -> UH3) = closure136(v234, v224)            │
00:00:31 #7627 [Verbose] > │                 UH3_0(v235, v236, v238, v239, v240, v237, v241, v242, v243,  │
00:00:31 #7628 [Verbose] > │ v244)                                                                        │
00:00:31 #7629 [Verbose] > │             | UH3_1 -> (* StreamNil *)                                       │
00:00:31 #7630 [Verbose] > │                 UH3_1                                                        │
00:00:31 #7631 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7632 [Verbose] > │             UH3_1                                                            │
00:00:31 #7633 [Verbose] > │     let v288 : UH3 =                                                         │
00:00:31 #7634 [Verbose] > │         match v251 with                                                      │
00:00:31 #7635 [Verbose] > │         | UH3_0(v252, v253, v254, v255, v256, v257, v258, v259, v260, v261)  │
00:00:31 #7636 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:31 #7637 [Verbose] > │             match v94 with                                                   │
00:00:31 #7638 [Verbose] > │             | UH3_0(v262, v263, v264, v265, v266, v267, v268, v269, v270,    │
00:00:31 #7639 [Verbose] > │ v271) -> (* StreamCons *)                                                    │
00:00:31 #7640 [Verbose] > │                 let v272 : float = v252 + v262                               │
00:00:31 #7641 [Verbose] > │                 let v273 : float = v253 + v263                               │
00:00:31 #7642 [Verbose] > │                 let v274 : float = v257 + v267                               │
00:00:31 #7643 [Verbose] > │                 let v275 : float = v254 + v264                               │
00:00:31 #7644 [Verbose] > │                 let v276 : float = v255 + v265                               │
00:00:31 #7645 [Verbose] > │                 let v277 : float = v256 + v266                               │
00:00:31 #7646 [Verbose] > │                 let v278 : float = v258 + v268                               │
00:00:31 #7647 [Verbose] > │                 let v279 : float = v259 + v269                               │
00:00:31 #7648 [Verbose] > │                 let v280 : float = v260 + v270                               │
00:00:31 #7649 [Verbose] > │                 let v281 : (unit -> UH3) = closure136(v271, v261)            │
00:00:31 #7650 [Verbose] > │                 UH3_0(v272, v273, v275, v276, v277, v274, v278, v279, v280,  │
00:00:31 #7651 [Verbose] > │ v281)                                                                        │
00:00:31 #7652 [Verbose] > │             | UH3_1 -> (* StreamNil *)                                       │
00:00:31 #7653 [Verbose] > │                 UH3_1                                                        │
00:00:31 #7654 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7655 [Verbose] > │             UH3_1                                                            │
00:00:31 #7656 [Verbose] > │     let v325 : UH3 =                                                         │
00:00:31 #7657 [Verbose] > │         match v288 with                                                      │
00:00:31 #7658 [Verbose] > │         | UH3_0(v289, v290, v291, v292, v293, v294, v295, v296, v297, v298)  │
00:00:31 #7659 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:31 #7660 [Verbose] > │             match v140 with                                                  │
00:00:31 #7661 [Verbose] > │             | UH3_0(v299, v300, v301, v302, v303, v304, v305, v306, v307,    │
00:00:31 #7662 [Verbose] > │ v308) -> (* StreamCons *)                                                    │
00:00:31 #7663 [Verbose] > │                 let v309 : float = v289 + v299                               │
00:00:31 #7664 [Verbose] > │                 let v310 : float = v290 + v300                               │
00:00:31 #7665 [Verbose] > │                 let v311 : float = v294 + v304                               │
00:00:31 #7666 [Verbose] > │                 let v312 : float = v291 + v301                               │
00:00:31 #7667 [Verbose] > │                 let v313 : float = v292 + v302                               │
00:00:31 #7668 [Verbose] > │                 let v314 : float = v293 + v303                               │
00:00:31 #7669 [Verbose] > │                 let v315 : float = v295 + v305                               │
00:00:31 #7670 [Verbose] > │                 let v316 : float = v296 + v306                               │
00:00:31 #7671 [Verbose] > │                 let v317 : float = v297 + v307                               │
00:00:31 #7672 [Verbose] > │                 let v318 : (unit -> UH3) = closure136(v308, v298)            │
00:00:31 #7673 [Verbose] > │                 UH3_0(v309, v310, v312, v313, v314, v311, v315, v316, v317,  │
00:00:31 #7674 [Verbose] > │ v318)                                                                        │
00:00:31 #7675 [Verbose] > │             | UH3_1 -> (* StreamNil *)                                       │
00:00:31 #7676 [Verbose] > │                 UH3_1                                                        │
00:00:31 #7677 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7678 [Verbose] > │             UH3_1                                                            │
00:00:31 #7679 [Verbose] > │     let v367 : UH1 =                                                         │
00:00:31 #7680 [Verbose] > │         match v325 with                                                      │
00:00:31 #7681 [Verbose] > │         | UH3_0(v326, v327, v328, v329, v330, v331, v332, v333, v334, v335)  │
00:00:31 #7682 [Verbose] > │ -> (* StreamCons *)                                                          │
00:00:31 #7683 [Verbose] > │             match v1 with                                                    │
00:00:31 #7684 [Verbose] > │             | UH1_0(v336, v337, v338, v339, v340, v341, v342, v343, v344,    │
00:00:31 #7685 [Verbose] > │ v345) -> (* StreamCons *)                                                    │
00:00:31 #7686 [Verbose] > │                 let v346 : float = v331 * 4.166666666666667E-06              │
00:00:31 #7687 [Verbose] > │                 let v347 : float = v341 + v346                               │
00:00:31 #7688 [Verbose] > │                 let v348 : float = 4.166666666666667E-06 * v328              │
00:00:31 #7689 [Verbose] > │                 let v349 : float = 4.166666666666667E-06 * v329              │
00:00:31 #7690 [Verbose] > │                 let v350 : float = 4.166666666666667E-06 * v330              │
00:00:31 #7691 [Verbose] > │                 let v351 : float = v338 + v348                               │
00:00:31 #7692 [Verbose] > │                 let v352 : float = v339 + v349                               │
00:00:31 #7693 [Verbose] > │                 let v353 : float = v340 + v350                               │
00:00:31 #7694 [Verbose] > │                 let v354 : float = 4.166666666666667E-06 * v332              │
00:00:31 #7695 [Verbose] > │                 let v355 : float = 4.166666666666667E-06 * v333              │
00:00:31 #7696 [Verbose] > │                 let v356 : float = 4.166666666666667E-06 * v334              │
00:00:31 #7697 [Verbose] > │                 let v357 : float = v342 + v354                               │
00:00:31 #7698 [Verbose] > │                 let v358 : float = v343 + v355                               │
00:00:31 #7699 [Verbose] > │                 let v359 : float = v344 + v356                               │
00:00:31 #7700 [Verbose] > │                 let v360 : (unit -> UH1) = closure137(v345, v335)            │
00:00:31 #7701 [Verbose] > │                 UH1_0(v336, v337, v351, v352, v353, v347, v357, v358, v359,  │
00:00:31 #7702 [Verbose] > │ v360)                                                                        │
00:00:31 #7703 [Verbose] > │             | UH1_1 -> (* StreamNil *)                                       │
00:00:31 #7704 [Verbose] > │                 UH1_1                                                        │
00:00:31 #7705 [Verbose] > │         | UH3_1 -> (* StreamNil *)                                           │
00:00:31 #7706 [Verbose] > │             UH1_1                                                            │
00:00:31 #7707 [Verbose] > │     let v368 : (unit -> UH1) = closure133(v367)                              │
00:00:31 #7708 [Verbose] > │     let v369 : (unit -> UH1) = method3(v367, v368)                           │
00:00:31 #7709 [Verbose] > │     let v370 : UH1 = v369 ()                                                 │
00:00:31 #7710 [Verbose] > │     v370                                                                     │
00:00:31 #7711 [Verbose] > │ and closure130 () (v0 : (UH1 -> UH3)) : (UH1 -> UH1) =                       │
00:00:31 #7712 [Verbose] > │     closure131(v0)                                                           │
00:00:31 #7713 [Verbose] > │ and method2 () : ((UH1 -> UH3) -> (UH1 -> UH1)) =                            │
00:00:31 #7714 [Verbose] > │     closure130()                                                             │
00:00:31 #7715 [Verbose] > │ and closure138 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:31 #7716 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *   │
00:00:31 #7717 [Verbose] > │ float * float) =                                                             │
00:00:31 #7718 [Verbose] > │     let v9 : float = v2 * v2                                                 │
00:00:31 #7719 [Verbose] > │     let v10 : float = v3 * v3                                                │
00:00:31 #7720 [Verbose] > │     let v11 : float = v9 + v10                                               │
00:00:31 #7721 [Verbose] > │     let v12 : float = v4 * v4                                                │
00:00:31 #7722 [Verbose] > │     let v13 : float = v11 + v12                                              │
00:00:31 #7723 [Verbose] > │     let v14 : float = sqrt v13                                               │
00:00:31 #7724 [Verbose] > │     let v15 : float = -5384.0 * v14                                          │
00:00:31 #7725 [Verbose] > │     let v16 : float = v15 * v2                                               │
00:00:31 #7726 [Verbose] > │     let v17 : float = v15 * v3                                               │
00:00:31 #7727 [Verbose] > │     let v18 : float = v15 * v4                                               │
00:00:31 #7728 [Verbose] > │     let v19 : float = v16 / v14                                              │
00:00:31 #7729 [Verbose] > │     let v20 : float = v17 / v14                                              │
00:00:31 #7730 [Verbose] > │     let v21 : float = v18 / v14                                              │
00:00:31 #7731 [Verbose] > │     struct (v19, v20, v21)                                                   │
00:00:31 #7732 [Verbose] > │ and closure139 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:31 #7733 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *   │
00:00:31 #7734 [Verbose] > │ float * float) =                                                             │
00:00:31 #7735 [Verbose] > │     let v9 : float = v2 + -0.65                                              │
00:00:31 #7736 [Verbose] > │     let v10 : float = v9 * v9                                                │
00:00:31 #7737 [Verbose] > │     let v11 : float = v3 * v3                                                │
00:00:31 #7738 [Verbose] > │     let v12 : float = v10 + v11                                              │
00:00:31 #7739 [Verbose] > │     let v13 : float = v4 * v4                                                │
00:00:31 #7740 [Verbose] > │     let v14 : float = v12 + v13                                              │
00:00:31 #7741 [Verbose] > │     let v15 : float = sqrt v14                                               │
00:00:31 #7742 [Verbose] > │     let v16 : float = -5384.0 * v15                                          │
00:00:31 #7743 [Verbose] > │     let v17 : float = v16 * v9                                               │
00:00:31 #7744 [Verbose] > │     let v18 : float = v16 * v3                                               │
00:00:31 #7745 [Verbose] > │     let v19 : float = v16 * v4                                               │
00:00:31 #7746 [Verbose] > │     let v20 : float = v17 / v15                                              │
00:00:31 #7747 [Verbose] > │     let v21 : float = v18 / v15                                              │
00:00:31 #7748 [Verbose] > │     let v22 : float = v19 / v15                                              │
00:00:31 #7749 [Verbose] > │     struct (v20, v21, v22)                                                   │
00:00:31 #7750 [Verbose] > │ and closure141 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float,  │
00:00:31 #7751 [Verbose] > │ v5 : float, v6 : float, v7 : float, v8 : float) struct (v9 : float, v10 :    │
00:00:31 #7752 [Verbose] > │ float, v11 : float, v12 : float, v13 : float, v14 : float, v15 : float, v16  │
00:00:31 #7753 [Verbose] > │ : float, v17 : float) : struct (float * float * float) =                     │
00:00:31 #7754 [Verbose] > │     let v18 : float = -1.0 * v2                                              │
00:00:31 #7755 [Verbose] > │     let v19 : float = -1.0 * v3                                              │
00:00:31 #7756 [Verbose] > │     let v20 : float = -1.0 * v4                                              │
00:00:31 #7757 [Verbose] > │     let v21 : float = v11 + v18                                              │
00:00:31 #7758 [Verbose] > │     let v22 : float = v12 + v19                                              │
00:00:31 #7759 [Verbose] > │     let v23 : float = v13 + v20                                              │
00:00:31 #7760 [Verbose] > │     let v24 : float = v21 * v21                                              │
00:00:31 #7761 [Verbose] > │     let v25 : float = v22 * v22                                              │
00:00:31 #7762 [Verbose] > │     let v26 : float = v24 + v25                                              │
00:00:31 #7763 [Verbose] > │     let v27 : float = v23 * v23                                              │
00:00:31 #7764 [Verbose] > │     let v28 : float = v26 + v27                                              │
00:00:31 #7765 [Verbose] > │     let v29 : float = sqrt v28                                               │
00:00:31 #7766 [Verbose] > │     let v30 : float = -5384.0 * v29                                          │
00:00:31 #7767 [Verbose] > │     let v31 : float = v30 * v21                                              │
00:00:31 #7768 [Verbose] > │     let v32 : float = v30 * v22                                              │
00:00:31 #7769 [Verbose] > │     let v33 : float = v30 * v23                                              │
00:00:31 #7770 [Verbose] > │     let v34 : float = v31 / v29                                              │
00:00:31 #7771 [Verbose] > │     let v35 : float = v32 / v29                                              │
00:00:31 #7772 [Verbose] > │     let v36 : float = v33 / v29                                              │
00:00:31 #7773 [Verbose] > │     struct (v34, v35, v36)                                                   │
00:00:31 #7774 [Verbose] > │ and closure140 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:31 #7775 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : (struct (float *  │
00:00:31 #7776 [Verbose] > │ float * float * float * float * float * float * float * float) -> struct     │
00:00:31 #7777 [Verbose] > │ (float * float * float)) =                                                   │
00:00:31 #7778 [Verbose] > │     closure141(v0, v1, v2, v3, v4, v5, v6, v7, v8)                           │
00:00:31 #7779 [Verbose] > │ and method4 () : UH4 =                                                       │
00:00:31 #7780 [Verbose] > │     let v0 : (struct (float * float * float * float * float * float * float  │
00:00:31 #7781 [Verbose] > │ * float * float) -> struct (float * float * float)) = closure138()           │
00:00:31 #7782 [Verbose] > │     let v1 : US1 = US1_0(0, v0)                                              │
00:00:31 #7783 [Verbose] > │     let v2 : (struct (float * float * float * float * float * float * float  │
00:00:31 #7784 [Verbose] > │ * float * float) -> struct (float * float * float)) = closure139()           │
00:00:31 #7785 [Verbose] > │     let v3 : US1 = US1_0(63, v2)                                             │
00:00:31 #7786 [Verbose] > │     let v4 : (struct (float * float * float * float * float * float * float  │
00:00:31 #7787 [Verbose] > │ * float * float) -> (struct (float * float * float * float * float * float * │
00:00:31 #7788 [Verbose] > │ float * float * float) -> struct (float * float * float))) = closure140()    │
00:00:31 #7789 [Verbose] > │     let v5 : US1 = US1_1(0, 1, v4)                                           │
00:00:31 #7790 [Verbose] > │     let v6 : US1 = US1_1(1, 2, v4)                                           │
00:00:31 #7791 [Verbose] > │     let v7 : US1 = US1_1(2, 3, v4)                                           │
00:00:31 #7792 [Verbose] > │     let v8 : US1 = US1_1(3, 4, v4)                                           │
00:00:31 #7793 [Verbose] > │     let v9 : US1 = US1_1(4, 5, v4)                                           │
00:00:31 #7794 [Verbose] > │     let v10 : US1 = US1_1(5, 6, v4)                                          │
00:00:31 #7795 [Verbose] > │     let v11 : US1 = US1_1(6, 7, v4)                                          │
00:00:31 #7796 [Verbose] > │     let v12 : US1 = US1_1(7, 8, v4)                                          │
00:00:31 #7797 [Verbose] > │     let v13 : US1 = US1_1(8, 9, v4)                                          │
00:00:31 #7798 [Verbose] > │     let v14 : US1 = US1_1(9, 10, v4)                                         │
00:00:31 #7799 [Verbose] > │     let v15 : US1 = US1_1(10, 11, v4)                                        │
00:00:31 #7800 [Verbose] > │     let v16 : US1 = US1_1(11, 12, v4)                                        │
00:00:31 #7801 [Verbose] > │     let v17 : US1 = US1_1(12, 13, v4)                                        │
00:00:31 #7802 [Verbose] > │     let v18 : US1 = US1_1(13, 14, v4)                                        │
00:00:31 #7803 [Verbose] > │     let v19 : US1 = US1_1(14, 15, v4)                                        │
00:00:31 #7804 [Verbose] > │     let v20 : US1 = US1_1(15, 16, v4)                                        │
00:00:31 #7805 [Verbose] > │     let v21 : US1 = US1_1(16, 17, v4)                                        │
00:00:31 #7806 [Verbose] > │     let v22 : US1 = US1_1(17, 18, v4)                                        │
00:00:31 #7807 [Verbose] > │     let v23 : US1 = US1_1(18, 19, v4)                                        │
00:00:31 #7808 [Verbose] > │     let v24 : US1 = US1_1(19, 20, v4)                                        │
00:00:31 #7809 [Verbose] > │     let v25 : US1 = US1_1(20, 21, v4)                                        │
00:00:31 #7810 [Verbose] > │     let v26 : US1 = US1_1(21, 22, v4)                                        │
00:00:31 #7811 [Verbose] > │     let v27 : US1 = US1_1(22, 23, v4)                                        │
00:00:31 #7812 [Verbose] > │     let v28 : US1 = US1_1(23, 24, v4)                                        │
00:00:31 #7813 [Verbose] > │     let v29 : US1 = US1_1(24, 25, v4)                                        │
00:00:31 #7814 [Verbose] > │     let v30 : US1 = US1_1(25, 26, v4)                                        │
00:00:31 #7815 [Verbose] > │     let v31 : US1 = US1_1(26, 27, v4)                                        │
00:00:31 #7816 [Verbose] > │     let v32 : US1 = US1_1(27, 28, v4)                                        │
00:00:31 #7817 [Verbose] > │     let v33 : US1 = US1_1(28, 29, v4)                                        │
00:00:31 #7818 [Verbose] > │     let v34 : US1 = US1_1(29, 30, v4)                                        │
00:00:31 #7819 [Verbose] > │     let v35 : US1 = US1_1(30, 31, v4)                                        │
00:00:31 #7820 [Verbose] > │     let v36 : US1 = US1_1(31, 32, v4)                                        │
00:00:31 #7821 [Verbose] > │     let v37 : US1 = US1_1(32, 33, v4)                                        │
00:00:31 #7822 [Verbose] > │     let v38 : US1 = US1_1(33, 34, v4)                                        │
00:00:31 #7823 [Verbose] > │     let v39 : US1 = US1_1(34, 35, v4)                                        │
00:00:31 #7824 [Verbose] > │     let v40 : US1 = US1_1(35, 36, v4)                                        │
00:00:31 #7825 [Verbose] > │     let v41 : US1 = US1_1(36, 37, v4)                                        │
00:00:31 #7826 [Verbose] > │     let v42 : US1 = US1_1(37, 38, v4)                                        │
00:00:31 #7827 [Verbose] > │     let v43 : US1 = US1_1(38, 39, v4)                                        │
00:00:31 #7828 [Verbose] > │     let v44 : US1 = US1_1(39, 40, v4)                                        │
00:00:31 #7829 [Verbose] > │     let v45 : US1 = US1_1(40, 41, v4)                                        │
00:00:31 #7830 [Verbose] > │     let v46 : US1 = US1_1(41, 42, v4)                                        │
00:00:31 #7831 [Verbose] > │     let v47 : US1 = US1_1(42, 43, v4)                                        │
00:00:31 #7832 [Verbose] > │     let v48 : US1 = US1_1(43, 44, v4)                                        │
00:00:31 #7833 [Verbose] > │     let v49 : US1 = US1_1(44, 45, v4)                                        │
00:00:31 #7834 [Verbose] > │     let v50 : US1 = US1_1(45, 46, v4)                                        │
00:00:31 #7835 [Verbose] > │     let v51 : US1 = US1_1(46, 47, v4)                                        │
00:00:31 #7836 [Verbose] > │     let v52 : US1 = US1_1(47, 48, v4)                                        │
00:00:31 #7837 [Verbose] > │     let v53 : US1 = US1_1(48, 49, v4)                                        │
00:00:31 #7838 [Verbose] > │     let v54 : US1 = US1_1(49, 50, v4)                                        │
00:00:31 #7839 [Verbose] > │     let v55 : US1 = US1_1(50, 51, v4)                                        │
00:00:31 #7840 [Verbose] > │     let v56 : US1 = US1_1(51, 52, v4)                                        │
00:00:31 #7841 [Verbose] > │     let v57 : US1 = US1_1(52, 53, v4)                                        │
00:00:31 #7842 [Verbose] > │     let v58 : US1 = US1_1(53, 54, v4)                                        │
00:00:31 #7843 [Verbose] > │     let v59 : US1 = US1_1(54, 55, v4)                                        │
00:00:31 #7844 [Verbose] > │     let v60 : US1 = US1_1(55, 56, v4)                                        │
00:00:31 #7845 [Verbose] > │     let v61 : US1 = US1_1(56, 57, v4)                                        │
00:00:31 #7846 [Verbose] > │     let v62 : US1 = US1_1(57, 58, v4)                                        │
00:00:31 #7847 [Verbose] > │     let v63 : US1 = US1_1(58, 59, v4)                                        │
00:00:31 #7848 [Verbose] > │     let v64 : US1 = US1_1(59, 60, v4)                                        │
00:00:31 #7849 [Verbose] > │     let v65 : UH4 = UH4_1                                                    │
00:00:31 #7850 [Verbose] > │     let v66 : UH4 = UH4_0(v64, v65)                                          │
00:00:31 #7851 [Verbose] > │     let v67 : UH4 = UH4_0(v63, v66)                                          │
00:00:31 #7852 [Verbose] > │     let v68 : UH4 = UH4_0(v62, v67)                                          │
00:00:31 #7853 [Verbose] > │     let v69 : UH4 = UH4_0(v61, v68)                                          │
00:00:31 #7854 [Verbose] > │     let v70 : UH4 = UH4_0(v60, v69)                                          │
00:00:31 #7855 [Verbose] > │     let v71 : UH4 = UH4_0(v59, v70)                                          │
00:00:31 #7856 [Verbose] > │     let v72 : UH4 = UH4_0(v58, v71)                                          │
00:00:31 #7857 [Verbose] > │     let v73 : UH4 = UH4_0(v57, v72)                                          │
00:00:31 #7858 [Verbose] > │     let v74 : UH4 = UH4_0(v56, v73)                                          │
00:00:31 #7859 [Verbose] > │     let v75 : UH4 = UH4_0(v55, v74)                                          │
00:00:31 #7860 [Verbose] > │     let v76 : UH4 = UH4_0(v54, v75)                                          │
00:00:31 #7861 [Verbose] > │     let v77 : UH4 = UH4_0(v53, v76)                                          │
00:00:31 #7862 [Verbose] > │     let v78 : UH4 = UH4_0(v52, v77)                                          │
00:00:31 #7863 [Verbose] > │     let v79 : UH4 = UH4_0(v51, v78)                                          │
00:00:31 #7864 [Verbose] > │     let v80 : UH4 = UH4_0(v50, v79)                                          │
00:00:31 #7865 [Verbose] > │     let v81 : UH4 = UH4_0(v49, v80)                                          │
00:00:31 #7866 [Verbose] > │     let v82 : UH4 = UH4_0(v48, v81)                                          │
00:00:31 #7867 [Verbose] > │     let v83 : UH4 = UH4_0(v47, v82)                                          │
00:00:31 #7868 [Verbose] > │     let v84 : UH4 = UH4_0(v46, v83)                                          │
00:00:31 #7869 [Verbose] > │     let v85 : UH4 = UH4_0(v45, v84)                                          │
00:00:31 #7870 [Verbose] > │     let v86 : UH4 = UH4_0(v44, v85)                                          │
00:00:31 #7871 [Verbose] > │     let v87 : UH4 = UH4_0(v43, v86)                                          │
00:00:31 #7872 [Verbose] > │     let v88 : UH4 = UH4_0(v42, v87)                                          │
00:00:31 #7873 [Verbose] > │     let v89 : UH4 = UH4_0(v41, v88)                                          │
00:00:31 #7874 [Verbose] > │     let v90 : UH4 = UH4_0(v40, v89)                                          │
00:00:31 #7875 [Verbose] > │     let v91 : UH4 = UH4_0(v39, v90)                                          │
00:00:31 #7876 [Verbose] > │     let v92 : UH4 = UH4_0(v38, v91)                                          │
00:00:31 #7877 [Verbose] > │     let v93 : UH4 = UH4_0(v37, v92)                                          │
00:00:31 #7878 [Verbose] > │     let v94 : UH4 = UH4_0(v36, v93)                                          │
00:00:31 #7879 [Verbose] > │     let v95 : UH4 = UH4_0(v35, v94)                                          │
00:00:31 #7880 [Verbose] > │     let v96 : UH4 = UH4_0(v34, v95)                                          │
00:00:31 #7881 [Verbose] > │     let v97 : UH4 = UH4_0(v33, v96)                                          │
00:00:31 #7882 [Verbose] > │     let v98 : UH4 = UH4_0(v32, v97)                                          │
00:00:31 #7883 [Verbose] > │     let v99 : UH4 = UH4_0(v31, v98)                                          │
00:00:31 #7884 [Verbose] > │     let v100 : UH4 = UH4_0(v30, v99)                                         │
00:00:31 #7885 [Verbose] > │     let v101 : UH4 = UH4_0(v29, v100)                                        │
00:00:31 #7886 [Verbose] > │     let v102 : UH4 = UH4_0(v28, v101)                                        │
00:00:31 #7887 [Verbose] > │     let v103 : UH4 = UH4_0(v27, v102)                                        │
00:00:31 #7888 [Verbose] > │     let v104 : UH4 = UH4_0(v26, v103)                                        │
00:00:31 #7889 [Verbose] > │     let v105 : UH4 = UH4_0(v25, v104)                                        │
00:00:31 #7890 [Verbose] > │     let v106 : UH4 = UH4_0(v24, v105)                                        │
00:00:31 #7891 [Verbose] > │     let v107 : UH4 = UH4_0(v23, v106)                                        │
00:00:31 #7892 [Verbose] > │     let v108 : UH4 = UH4_0(v22, v107)                                        │
00:00:31 #7893 [Verbose] > │     let v109 : UH4 = UH4_0(v21, v108)                                        │
00:00:31 #7894 [Verbose] > │     let v110 : UH4 = UH4_0(v20, v109)                                        │
00:00:31 #7895 [Verbose] > │     let v111 : UH4 = UH4_0(v19, v110)                                        │
00:00:31 #7896 [Verbose] > │     let v112 : UH4 = UH4_0(v18, v111)                                        │
00:00:31 #7897 [Verbose] > │     let v113 : UH4 = UH4_0(v17, v112)                                        │
00:00:31 #7898 [Verbose] > │     let v114 : UH4 = UH4_0(v16, v113)                                        │
00:00:31 #7899 [Verbose] > │     let v115 : UH4 = UH4_0(v15, v114)                                        │
00:00:31 #7900 [Verbose] > │     let v116 : UH4 = UH4_0(v14, v115)                                        │
00:00:31 #7901 [Verbose] > │     let v117 : UH4 = UH4_0(v13, v116)                                        │
00:00:31 #7902 [Verbose] > │     let v118 : UH4 = UH4_0(v12, v117)                                        │
00:00:31 #7903 [Verbose] > │     let v119 : UH4 = UH4_0(v11, v118)                                        │
00:00:31 #7904 [Verbose] > │     let v120 : UH4 = UH4_0(v10, v119)                                        │
00:00:31 #7905 [Verbose] > │     let v121 : UH4 = UH4_0(v9, v120)                                         │
00:00:31 #7906 [Verbose] > │     let v122 : UH4 = UH4_0(v8, v121)                                         │
00:00:31 #7907 [Verbose] > │     let v123 : UH4 = UH4_0(v7, v122)                                         │
00:00:31 #7908 [Verbose] > │     let v124 : UH4 = UH4_0(v6, v123)                                         │
00:00:31 #7909 [Verbose] > │     let v125 : UH4 = UH4_0(v5, v124)                                         │
00:00:31 #7910 [Verbose] > │     let v126 : UH4 = UH4_0(v3, v125)                                         │
00:00:31 #7911 [Verbose] > │     UH4_0(v1, v126)                                                          │
00:00:31 #7912 [Verbose] > │ and closure143 (v0 : UH5) () : UH5 =                                         │
00:00:31 #7913 [Verbose] > │     v0                                                                       │
00:00:31 #7914 [Verbose] > │ and method5 (v0 : UH1, v1 : UH5, v2 : int32) : struct (UH5 * int32) =        │
00:00:31 #7915 [Verbose] > │     match v0 with                                                            │
00:00:31 #7916 [Verbose] > │     | UH1_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons *)   │
00:00:31 #7917 [Verbose] > │         let v13 : int32 = v2 + 1                                             │
00:00:31 #7918 [Verbose] > │         let v14 : UH1 = v12 ()                                               │
00:00:31 #7919 [Verbose] > │         let v15 : (unit -> UH5) = closure143(v1)                             │
00:00:31 #7920 [Verbose] > │         let v16 : UH5 = UH5_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v15) │
00:00:31 #7921 [Verbose] > │         method5(v14, v16, v13)                                               │
00:00:31 #7922 [Verbose] > │     | UH1_1 -> (* StreamNil *)                                               │
00:00:31 #7923 [Verbose] > │         struct (v1, v2)                                                      │
00:00:31 #7924 [Verbose] > │ and closure144 (v0 : UH5) () : UH5 =                                         │
00:00:31 #7925 [Verbose] > │     v0                                                                       │
00:00:31 #7926 [Verbose] > │ and method6 (v0 : UH5, v1 : UH5) : UH5 =                                     │
00:00:31 #7927 [Verbose] > │     match v0 with                                                            │
00:00:31 #7928 [Verbose] > │     | UH5_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -> (* StreamCons  │
00:00:31 #7929 [Verbose] > │ *)                                                                           │
00:00:31 #7930 [Verbose] > │         let v13 : UH5 = v12 ()                                               │
00:00:31 #7931 [Verbose] > │         let v14 : (unit -> UH5) = closure144(v1)                             │
00:00:31 #7932 [Verbose] > │         let v15 : UH5 = UH5_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v14) │
00:00:31 #7933 [Verbose] > │         method6(v13, v15)                                                    │
00:00:31 #7934 [Verbose] > │     | UH5_1 -> (* StreamNil *)                                               │
00:00:31 #7935 [Verbose] > │         v1                                                                   │
00:00:31 #7936 [Verbose] > │ and closure145 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:31 #7937 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *   │
00:00:31 #7938 [Verbose] > │ float * float) =                                                             │
00:00:31 #7939 [Verbose] > │     struct (0.0, 0.0, 0.0)                                                   │
00:00:31 #7940 [Verbose] > │ and method9 (v0 : int32, v1 : UH1) : US3 =                                   │
00:00:31 #7941 [Verbose] > │     match v1 with                                                            │
00:00:31 #7942 [Verbose] > │     | UH1_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* StreamCons *)    │
00:00:31 #7943 [Verbose] > │         let v12 : bool = v0 <= 0                                             │
00:00:31 #7944 [Verbose] > │         if v12 then                                                          │
00:00:31 #7945 [Verbose] > │             US3_1(v2, v3, v4, v5, v6, v7, v8, v9, v10)                       │
00:00:31 #7946 [Verbose] > │         else                                                                 │
00:00:31 #7947 [Verbose] > │             let v14 : int32 = v0 - 1                                         │
00:00:31 #7948 [Verbose] > │             let v15 : UH1 = v11 ()                                           │
00:00:31 #7949 [Verbose] > │             method9(v14, v15)                                                │
00:00:31 #7950 [Verbose] > │     | UH1_1 -> (* StreamNil *)                                               │
00:00:31 #7951 [Verbose] > │         US3_0                                                                │
00:00:31 #7952 [Verbose] > │ and closure146 () struct (v0 : float, v1 : float, v2 : float, v3 : float, v4 │
00:00:31 #7953 [Verbose] > │ : float, v5 : float, v6 : float, v7 : float, v8 : float) : struct (float *   │
00:00:31 #7954 [Verbose] > │ float * float) =                                                             │
00:00:31 #7955 [Verbose] > │     struct (0.0, 0.0, 0.0)                                                   │
00:00:31 #7956 [Verbose] > │ and method8 (v0 : int32, v1 : UH1, v2 : UH4, v3 : UH6) : UH6 =               │
00:00:31 #7957 [Verbose] > │     match v2 with                                                            │
00:00:31 #7958 [Verbose] > │     | UH4_0(v4, v5) -> (* Cons *)                                            │
00:00:31 #7959 [Verbose] > │         let v6 : UH6 = method8(v0, v1, v5, v3)                               │
00:00:31 #7960 [Verbose] > │         let v55 : (struct (float * float * float * float * float * float *   │
00:00:31 #7961 [Verbose] > │ float * float * float) -> struct (float * float * float)) =                  │
00:00:31 #7962 [Verbose] > │             match v4 with                                                    │
00:00:31 #7963 [Verbose] > │             | US1_0(v7, v8) -> (* ExternalForce *)                           │
00:00:31 #7964 [Verbose] > │                 let v9 : bool = v0 = v7                                      │
00:00:31 #7965 [Verbose] > │                 if v9 then                                                   │
00:00:31 #7966 [Verbose] > │                     v8                                                       │
00:00:31 #7967 [Verbose] > │                 else                                                         │
00:00:31 #7968 [Verbose] > │                     closure145()                                             │
00:00:31 #7969 [Verbose] > │             | US1_1(v12, v13, v14) -> (* InternalForce *)                    │
00:00:31 #7970 [Verbose] > │                 let v15 : bool = v0 = v12                                    │
00:00:31 #7971 [Verbose] > │                 let v49 : US2 =                                              │
00:00:31 #7972 [Verbose] > │                     if v15 then                                              │
00:00:31 #7973 [Verbose] > │                         let v16 : US3 = method9(v13, v1)                     │
00:00:31 #7974 [Verbose] > │                         match v16 with                                       │
00:00:31 #7975 [Verbose] > │                         | US3_0 -> (* None *)                                │
00:00:31 #7976 [Verbose] > │                             US2_0                                            │
00:00:31 #7977 [Verbose] > │                         | US3_1(v17, v18, v19, v20, v21, v22, v23, v24, v25) │
00:00:31 #7978 [Verbose] > │ -> (* Some *)                                                                │
00:00:31 #7979 [Verbose] > │                             let v26 : (struct (float * float * float * float │
00:00:31 #7980 [Verbose] > │ * float * float * float * float * float) -> struct (float * float * float))  │
00:00:31 #7981 [Verbose] > │ = v14 struct (v17, v18, v19, v20, v21, v22, v23, v24, v25)                   │
00:00:31 #7982 [Verbose] > │                             US2_1(v26)                                       │
00:00:31 #7983 [Verbose] > │                     else                                                     │
00:00:31 #7984 [Verbose] > │                         let v31 : bool = v0 = v13                            │
00:00:31 #7985 [Verbose] > │                         if v31 then                                          │
00:00:31 #7986 [Verbose] > │                             let v32 : US3 = method9(v12, v1)                 │
00:00:31 #7987 [Verbose] > │                             match v32 with                                   │
00:00:31 #7988 [Verbose] > │                             | US3_0 -> (* None *)                            │
00:00:31 #7989 [Verbose] > │                                 US2_0                                        │
00:00:31 #7990 [Verbose] > │                             | US3_1(v33, v34, v35, v36, v37, v38, v39, v40,  │
00:00:31 #7991 [Verbose] > │ v41) -> (* Some *)                                                           │
00:00:31 #7992 [Verbose] > │                                 let v42 : (struct (float * float * float *   │
00:00:31 #7993 [Verbose] > │ float * float * float * float * float * float) -> struct (float * float *    │
00:00:31 #7994 [Verbose] > │ float)) = v14 struct (v33, v34, v35, v36, v37, v38, v39, v40, v41)           │
00:00:31 #7995 [Verbose] > │                                 US2_1(v42)                                   │
00:00:31 #7996 [Verbose] > │                         else                                                 │
00:00:31 #7997 [Verbose] > │                             US2_0                                            │
00:00:31 #7998 [Verbose] > │                 match v49 with                                               │
00:00:31 #7999 [Verbose] > │                 | US2_0 -> (* None *)                                        │
00:00:31 #8000 [Verbose] > │                     closure146()                                             │
00:00:31 #8001 [Verbose] > │                 | US2_1(v50) -> (* Some *)                                   │
00:00:31 #8002 [Verbose] > │                     v50                                                      │
00:00:31 #8003 [Verbose] > │         UH6_0(v55, v6)                                                       │
00:00:31 #8004 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:00:31 #8005 [Verbose] > │         v3                                                                   │
00:00:31 #8006 [Verbose] > │ and method10 (v0 : float, v1 : float, v2 : float, v3 : float, v4 : float, v5 │
00:00:31 #8007 [Verbose] > │ : float, v6 : float, v7 : float, v8 : float, v9 : UH6, v10 : UH7) : UH7 =    │
00:00:31 #8008 [Verbose] > │     match v9 with                                                            │
00:00:31 #8009 [Verbose] > │     | UH6_0(v11, v12) -> (* Cons *)                                          │
00:00:31 #8010 [Verbose] > │         let v13 : UH7 = method10(v0, v1, v2, v3, v4, v5, v6, v7, v8, v12,    │
00:00:31 #8011 [Verbose] > │ v10)                                                                         │
00:00:31 #8012 [Verbose] > │         let struct (v14 : float, v15 : float, v16 : float) = v11 struct (v0, │
00:00:31 #8013 [Verbose] > │ v1, v2, v3, v4, v5, v6, v7, v8)                                              │
00:00:31 #8014 [Verbose] > │         UH7_0(v14, v15, v16, v13)                                            │
00:00:31 #8015 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:00:31 #8016 [Verbose] > │         v10                                                                  │
00:00:31 #8017 [Verbose] > │ and method11 (v0 : UH7, v1 : float, v2 : float, v3 : float) : struct (float  │
00:00:31 #8018 [Verbose] > │ * float * float) =                                                           │
00:00:31 #8019 [Verbose] > │     match v0 with                                                            │
00:00:31 #8020 [Verbose] > │     | UH7_0(v4, v5, v6, v7) -> (* Cons *)                                    │
00:00:31 #8021 [Verbose] > │         let v8 : float = v1 + v4                                             │
00:00:31 #8022 [Verbose] > │         let v9 : float = v2 + v5                                             │
00:00:31 #8023 [Verbose] > │         let v10 : float = v3 + v6                                            │
00:00:31 #8024 [Verbose] > │         method11(v7, v8, v9, v10)                                            │
00:00:31 #8025 [Verbose] > │     | UH7_1 -> (* Nil *)                                                     │
00:00:31 #8026 [Verbose] > │         struct (v1, v2, v3)                                                  │
00:00:31 #8027 [Verbose] > │ and closure147 (v0 : UH3) () : UH3 =                                         │
00:00:31 #8028 [Verbose] > │     v0                                                                       │
00:00:31 #8029 [Verbose] > │ and method7 (v0 : UH4, v1 : UH1, v2 : UH5, v3 : UH3) : UH3 =                 │
00:00:31 #8030 [Verbose] > │     match v2 with                                                            │
00:00:31 #8031 [Verbose] > │     | UH5_0(v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -> (*           │
00:00:31 #8032 [Verbose] > │ StreamCons *)                                                                │
00:00:31 #8033 [Verbose] > │         let v15 : UH5 = v14 ()                                               │
00:00:31 #8034 [Verbose] > │         let v16 : UH3 = method7(v0, v1, v15, v3)                             │
00:00:31 #8035 [Verbose] > │         let v17 : UH6 = UH6_1                                                │
00:00:31 #8036 [Verbose] > │         let v18 : UH6 = method8(v4, v1, v0, v17)                             │
00:00:31 #8037 [Verbose] > │         let v19 : UH7 = UH7_1                                                │
00:00:31 #8038 [Verbose] > │         let v20 : UH7 = method10(v5, v6, v7, v8, v9, v10, v11, v12, v13,     │
00:00:31 #8039 [Verbose] > │ v18, v19)                                                                    │
00:00:31 #8040 [Verbose] > │         let v21 : float = 0.0                                                │
00:00:31 #8041 [Verbose] > │         let v22 : float = 0.0                                                │
00:00:31 #8042 [Verbose] > │         let v23 : float = 0.0                                                │
00:00:31 #8043 [Verbose] > │         let struct (v24 : float, v25 : float, v26 : float) = method11(v20,   │
00:00:31 #8044 [Verbose] > │ v21, v22, v23)                                                               │
00:00:31 #8045 [Verbose] > │         let v27 : float = v24 / v6                                           │
00:00:31 #8046 [Verbose] > │         let v28 : float = v25 / v6                                           │
00:00:31 #8047 [Verbose] > │         let v29 : float = v26 / v6                                           │
00:00:31 #8048 [Verbose] > │         let v30 : (unit -> UH3) = closure147(v16)                            │
00:00:31 #8049 [Verbose] > │         UH3_0(0.0, 0.0, v11, v12, v13, 1.0, v27, v28, v29, v30)              │
00:00:31 #8050 [Verbose] > │     | UH5_1 -> (* StreamNil *)                                               │
00:00:31 #8051 [Verbose] > │         v3                                                                   │
00:00:31 #8052 [Verbose] > │ and closure142 (v0 : UH4) (v1 : UH1) : UH3 =                                 │
00:00:31 #8053 [Verbose] > │     let v2 : UH5 = UH5_1                                                     │
00:00:31 #8054 [Verbose] > │     let v3 : int32 = 0                                                       │
00:00:31 #8055 [Verbose] > │     let struct (v4 : UH5, v5 : int32) = method5(v1, v2, v3)                  │
00:00:31 #8056 [Verbose] > │     let v6 : UH5 = UH5_1                                                     │
00:00:31 #8057 [Verbose] > │     let v7 : UH5 = method6(v4, v6)                                           │
00:00:31 #8058 [Verbose] > │     let v8 : UH3 = UH3_1                                                     │
00:00:31 #8059 [Verbose] > │     let v9 : UH3 = method7(v0, v1, v7, v8)                                   │
00:00:31 #8060 [Verbose] > │     v9                                                                       │
00:00:31 #8061 [Verbose] > │ and closure148 (v0 : (UH1 -> UH1), v1 : UH1, v2 : UH1) () : UH8 =            │
00:00:31 #8062 [Verbose] > │     let v3 : UH1 = v0 v2                                                     │
00:00:31 #8063 [Verbose] > │     let v4 : (unit -> UH8) = closure148(v0, v1, v3)                          │
00:00:31 #8064 [Verbose] > │     UH8_0(v2, v4)                                                            │
00:00:31 #8065 [Verbose] > │ and method12 (v0 : float, v1 : UH8) : US4 =                                  │
00:00:31 #8066 [Verbose] > │     match v1 with                                                            │
00:00:31 #8067 [Verbose] > │     | UH8_0(v2, v3) -> (* StreamCons *)                                      │
00:00:31 #8068 [Verbose] > │         let v4 : bool = v0 <= 0.0                                            │
00:00:31 #8069 [Verbose] > │         if v4 then                                                           │
00:00:31 #8070 [Verbose] > │             US4_1(v2)                                                        │
00:00:31 #8071 [Verbose] > │         else                                                                 │
00:00:31 #8072 [Verbose] > │             let v6 : float = v0 - 1.0                                        │
00:00:31 #8073 [Verbose] > │             let v7 : UH8 = v3 ()                                             │
00:00:31 #8074 [Verbose] > │             method12(v6, v7)                                                 │
00:00:31 #8075 [Verbose] > │     | UH8_1 -> (* StreamNil *)                                               │
00:00:31 #8076 [Verbose] > │         US4_0                                                                │
00:00:31 #8077 [Verbose] > │ and closure149 (v0 : UH9) () : UH9 =                                         │
00:00:31 #8078 [Verbose] > │     v0                                                                       │
00:00:31 #8079 [Verbose] > │ and method13 (v0 : UH1, v1 : UH9) : UH9 =                                    │
00:00:31 #8080 [Verbose] > │     match v0 with                                                            │
00:00:31 #8081 [Verbose] > │     | UH1_0(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -> (* StreamCons *)    │
00:00:31 #8082 [Verbose] > │         let v12 : UH1 = v11 ()                                               │
00:00:31 #8083 [Verbose] > │         let v13 : UH9 = method13(v12, v1)                                    │
00:00:31 #8084 [Verbose] > │         let v14 : (unit -> UH9) = closure149(v13)                            │
00:00:31 #8085 [Verbose] > │         UH9_0(v4, v5, v6, v14)                                               │
00:00:31 #8086 [Verbose] > │     | UH1_1 -> (* StreamNil *)                                               │
00:00:31 #8087 [Verbose] > │         v1                                                                   │
00:00:31 #8088 [Verbose] > │ and method14 (v0 : UH9, v1 : UH7) : UH7 =                                    │
00:00:31 #8089 [Verbose] > │     match v0 with                                                            │
00:00:31 #8090 [Verbose] > │     | UH9_0(v2, v3, v4, v5) -> (* StreamCons *)                              │
00:00:31 #8091 [Verbose] > │         let v6 : UH9 = v5 ()                                                 │
00:00:31 #8092 [Verbose] > │         let v7 : UH7 = method14(v6, v1)                                      │
00:00:31 #8093 [Verbose] > │         UH7_0(v2, v3, v4, v7)                                                │
00:00:31 #8094 [Verbose] > │     | UH9_1 -> (* StreamNil *)                                               │
00:00:31 #8095 [Verbose] > │         v1                                                                   │
00:00:31 #8096 [Verbose] > │ and method15 (v0 : UH7, v1 : UH7) : UH7 =                                    │
00:00:31 #8097 [Verbose] > │     match v0 with                                                            │
00:00:31 #8098 [Verbose] > │     | UH7_0(v2, v3, v4, v5) -> (* Cons *)                                    │
00:00:31 #8099 [Verbose] > │         let v6 : UH7 = method15(v5, v1)                                      │
00:00:31 #8100 [Verbose] > │         UH7_0(v2, v3, v4, v6)                                                │
00:00:31 #8101 [Verbose] > │     | UH7_1 -> (* Nil *)                                                     │
00:00:31 #8102 [Verbose] > │         v1                                                                   │
00:00:31 #8103 [Verbose] > │ and method16 (v0 : UH7, v1 : UH10) : UH10 =                                  │
00:00:31 #8104 [Verbose] > │     match v0 with                                                            │
00:00:31 #8105 [Verbose] > │     | UH7_0(v2, v3, v4, v5) -> (* Cons *)                                    │
00:00:31 #8106 [Verbose] > │         let v6 : UH10 = method16(v5, v1)                                     │
00:00:31 #8107 [Verbose] > │         UH10_0(v2, v3, v6)                                                   │
00:00:31 #8108 [Verbose] > │     | UH7_1 -> (* Nil *)                                                     │
00:00:31 #8109 [Verbose] > │         v1                                                                   │
00:00:31 #8110 [Verbose] > │ and closure150 (v0 : UH11) () : UH11 =                                       │
00:00:31 #8111 [Verbose] > │     v0                                                                       │
00:00:31 #8112 [Verbose] > │ and method17 (v0 : UH10, v1 : UH11) : UH11 =                                 │
00:00:31 #8113 [Verbose] > │     match v0 with                                                            │
00:00:31 #8114 [Verbose] > │     | UH10_0(v2, v3, v4) -> (* Cons *)                                       │
00:00:31 #8115 [Verbose] > │         let v5 : UH11 = method17(v4, v1)                                     │
00:00:31 #8116 [Verbose] > │         let v6 : (unit -> UH11) = closure150(v5)                             │
00:00:31 #8117 [Verbose] > │         UH11_0(v2, v3, v6)                                                   │
00:00:31 #8118 [Verbose] > │     | UH10_1 -> (* Nil *)                                                    │
00:00:31 #8119 [Verbose] > │         v1                                                                   │
00:00:31 #8120 [Verbose] > │ and closure151 (v0 : UH0) () : UH0 =                                         │
00:00:31 #8121 [Verbose] > │     v0                                                                       │
00:00:31 #8122 [Verbose] > │ and closure152 (v0 : UH0) () : UH0 =                                         │
00:00:31 #8123 [Verbose] > │     v0                                                                       │
00:00:31 #8124 [Verbose] > │ and method18 (v0 : UH11) : struct (UH0 * UH0) =                              │
00:00:31 #8125 [Verbose] > │     match v0 with                                                            │
00:00:31 #8126 [Verbose] > │     | UH11_0(v1, v2, v3) -> (* StreamCons *)                                 │
00:00:31 #8127 [Verbose] > │         let v4 : UH11 = v3 ()                                                │
00:00:31 #8128 [Verbose] > │         let struct (v5 : UH0, v6 : UH0) = method18(v4)                       │
00:00:31 #8129 [Verbose] > │         let v7 : (unit -> UH0) = closure151(v5)                              │
00:00:31 #8130 [Verbose] > │         let v8 : UH0 = UH0_0(v1, v7)                                         │
00:00:31 #8131 [Verbose] > │         let v9 : (unit -> UH0) = closure152(v6)                              │
00:00:31 #8132 [Verbose] > │         let v10 : UH0 = UH0_0(v2, v9)                                        │
00:00:31 #8133 [Verbose] > │         struct (v8, v10)                                                     │
00:00:31 #8134 [Verbose] > │     | UH11_1 -> (* StreamNil *)                                              │
00:00:31 #8135 [Verbose] > │         let v11 : UH0 = UH0_1                                                │
00:00:31 #8136 [Verbose] > │         let v12 : UH0 = UH0_1                                                │
00:00:31 #8137 [Verbose] > │         struct (v11, v12)                                                    │
00:00:31 #8138 [Verbose] > │ and method19 (v0 : UH0, v1 : UH12) : UH12 =                                  │
00:00:31 #8139 [Verbose] > │     match v0 with                                                            │
00:00:31 #8140 [Verbose] > │     | UH0_0(v2, v3) -> (* StreamCons *)                                      │
00:00:31 #8141 [Verbose] > │         let v4 : UH0 = v3 ()                                                 │
00:00:31 #8142 [Verbose] > │         let v5 : UH12 = method19(v4, v1)                                     │
00:00:31 #8143 [Verbose] > │         UH12_0(v2, v5)                                                       │
00:00:31 #8144 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:31 #8145 [Verbose] > │         v1                                                                   │
00:00:31 #8146 [Verbose] > │ and method21 (v0 : UH12, v1 : int32) : int32 =                               │
00:00:31 #8147 [Verbose] > │     match v0 with                                                            │
00:00:31 #8148 [Verbose] > │     | UH12_0(v2, v3) -> (* Cons *)                                           │
00:00:31 #8149 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:00:31 #8150 [Verbose] > │         method21(v3, v4)                                                     │
00:00:31 #8151 [Verbose] > │     | UH12_1 -> (* Nil *)                                                    │
00:00:31 #8152 [Verbose] > │         v1                                                                   │
00:00:31 #8153 [Verbose] > │ and method22 (v0 : (float []), v1 : UH12, v2 : int32) : int32 =              │
00:00:31 #8154 [Verbose] > │     match v1 with                                                            │
00:00:31 #8155 [Verbose] > │     | UH12_0(v3, v4) -> (* Cons *)                                           │
00:00:31 #8156 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:00:31 #8157 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:00:31 #8158 [Verbose] > │         method22(v0, v4, v5)                                                 │
00:00:31 #8159 [Verbose] > │     | UH12_1 -> (* Nil *)                                                    │
00:00:31 #8160 [Verbose] > │         v2                                                                   │
00:00:31 #8161 [Verbose] > │ and method20 (v0 : UH12) : (float []) =                                      │
00:00:31 #8162 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:31 #8163 [Verbose] > │     let v2 : int32 = method21(v0, v1)                                        │
00:00:31 #8164 [Verbose] > │     let v3 : (float []) = Array.zeroCreate<float> (v2)                       │
00:00:31 #8165 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:31 #8166 [Verbose] > │     let v5 : int32 = method22(v3, v0, v4)                                    │
00:00:31 #8167 [Verbose] > │     v3                                                                       │
00:00:31 #8168 [Verbose] > │ and closure153 (v0 : UH2) () : UH2 =                                         │
00:00:31 #8169 [Verbose] > │     v0                                                                       │
00:00:31 #8170 [Verbose] > │ and method1 (v0 : UH1, v1 : UH0, v2 : UH2) : UH2 =                           │
00:00:31 #8171 [Verbose] > │     match v1 with                                                            │
00:00:31 #8172 [Verbose] > │     | UH0_0(v3, v4) -> (* StreamCons *)                                      │
00:00:31 #8173 [Verbose] > │         let v5 : UH0 = v4 ()                                                 │
00:00:31 #8174 [Verbose] > │         let v6 : UH2 = method1(v0, v5, v2)                                   │
00:00:31 #8175 [Verbose] > │         let v7 : ((UH1 -> UH3) -> (UH1 -> UH1)) = method2()                  │
00:00:31 #8176 [Verbose] > │         let v8 : UH4 = method4()                                             │
00:00:31 #8177 [Verbose] > │         let v9 : (UH1 -> UH3) = closure142(v8)                               │
00:00:31 #8178 [Verbose] > │         let v10 : (UH1 -> UH1) = v7 v9                                       │
00:00:31 #8179 [Verbose] > │         let v11 : UH1 = v10 v0                                               │
00:00:31 #8180 [Verbose] > │         let v12 : (unit -> UH8) = closure148(v10, v0, v11)                   │
00:00:31 #8181 [Verbose] > │         let v13 : UH8 = UH8_0(v0, v12)                                       │
00:00:31 #8182 [Verbose] > │         let v14 : US4 = method12(v3, v13)                                    │
00:00:31 #8183 [Verbose] > │         let v18 : UH1 =                                                      │
00:00:31 #8184 [Verbose] > │             match v14 with                                                   │
00:00:31 #8185 [Verbose] > │             | US4_0 -> (* None *)                                            │
00:00:31 #8186 [Verbose] > │                 failwith<UH1> "Option does not have a value."                │
00:00:32 #8187 [Verbose] > │             | US4_1(v15) -> (* Some *)                                       │
00:00:32 #8188 [Verbose] > │                 v15                                                          │
00:00:32 #8189 [Verbose] > │         let v19 : UH9 = UH9_1                                                │
00:00:32 #8190 [Verbose] > │         let v20 : UH9 = method13(v18, v19)                                   │
00:00:32 #8191 [Verbose] > │         let v21 : UH7 = UH7_1                                                │
00:00:32 #8192 [Verbose] > │         let v22 : UH7 = method14(v20, v21)                                   │
00:00:32 #8193 [Verbose] > │         let v23 : float = 0.65                                               │
00:00:32 #8194 [Verbose] > │         let v24 : float = 0.0                                                │
00:00:32 #8195 [Verbose] > │         let v25 : float = 0.0                                                │
00:00:32 #8196 [Verbose] > │         let v26 : UH7 = UH7_1                                                │
00:00:32 #8197 [Verbose] > │         let v27 : UH7 = UH7_0(v23, v24, v25, v26)                            │
00:00:32 #8198 [Verbose] > │         let v28 : UH7 = method15(v22, v27)                                   │
00:00:32 #8199 [Verbose] > │         let v29 : UH10 = UH10_1                                              │
00:00:32 #8200 [Verbose] > │         let v30 : UH10 = method16(v28, v29)                                  │
00:00:32 #8201 [Verbose] > │         let v31 : UH11 = UH11_1                                              │
00:00:32 #8202 [Verbose] > │         let v32 : UH11 = method17(v30, v31)                                  │
00:00:32 #8203 [Verbose] > │         let struct (v33 : UH0, v34 : UH0) = method18(v32)                    │
00:00:32 #8204 [Verbose] > │         let v35 : UH12 = UH12_1                                              │
00:00:32 #8205 [Verbose] > │         let v36 : UH12 = method19(v33, v35)                                  │
00:00:32 #8206 [Verbose] > │         let v37 : float = 0.0                                                │
00:00:32 #8207 [Verbose] > │         let v38 : UH12 = UH12_0(v37, v36)                                    │
00:00:32 #8208 [Verbose] > │         let v39 : (float []) = method20(v38)                                 │
00:00:32 #8209 [Verbose] > │         let v40 : UH12 = UH12_1                                              │
00:00:32 #8210 [Verbose] > │         let v41 : UH12 = method19(v34, v40)                                  │
00:00:32 #8211 [Verbose] > │         let v42 : float = 0.0                                                │
00:00:32 #8212 [Verbose] > │         let v43 : UH12 = UH12_0(v42, v41)                                    │
00:00:32 #8213 [Verbose] > │         let v44 : (float []) = method20(v43)                                 │
00:00:32 #8214 [Verbose] > │         let v45 : (unit -> UH2) = closure153(v6)                             │
00:00:32 #8215 [Verbose] > │         UH2_0(v39, v44, v45)                                                 │
00:00:32 #8216 [Verbose] > │     | UH0_1 -> (* StreamNil *)                                               │
00:00:32 #8217 [Verbose] > │         v2                                                                   │
00:00:32 #8218 [Verbose] > │ and closure154 (v0 : UH13) () : UH13 =                                       │
00:00:32 #8219 [Verbose] > │     v0                                                                       │
00:00:32 #8220 [Verbose] > │ and method23 (v0 : UH2, v1 : UH13, v2 : int32) : struct (UH13 * int32) =     │
00:00:32 #8221 [Verbose] > │     match v0 with                                                            │
00:00:32 #8222 [Verbose] > │     | UH2_0(v3, v4, v5) -> (* StreamCons *)                                  │
00:00:32 #8223 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:00:32 #8224 [Verbose] > │         let v7 : UH2 = v5 ()                                                 │
00:00:32 #8225 [Verbose] > │         let v8 : (unit -> UH13) = closure154(v1)                             │
00:00:32 #8226 [Verbose] > │         let v9 : UH13 = UH13_0(v2, v3, v4, v8)                               │
00:00:32 #8227 [Verbose] > │         method23(v7, v9, v6)                                                 │
00:00:32 #8228 [Verbose] > │     | UH2_1 -> (* StreamNil *)                                               │
00:00:32 #8229 [Verbose] > │         struct (v1, v2)                                                      │
00:00:32 #8230 [Verbose] > │ and closure155 (v0 : UH13) () : UH13 =                                       │
00:00:32 #8231 [Verbose] > │     v0                                                                       │
00:00:32 #8232 [Verbose] > │ and method24 (v0 : UH13, v1 : UH13) : UH13 =                                 │
00:00:32 #8233 [Verbose] > │     match v0 with                                                            │
00:00:32 #8234 [Verbose] > │     | UH13_0(v2, v3, v4, v5) -> (* StreamCons *)                             │
00:00:32 #8235 [Verbose] > │         let v6 : UH13 = v5 ()                                                │
00:00:32 #8236 [Verbose] > │         let v7 : (unit -> UH13) = closure155(v1)                             │
00:00:32 #8237 [Verbose] > │         let v8 : UH13 = UH13_0(v2, v3, v4, v7)                               │
00:00:32 #8238 [Verbose] > │         method24(v6, v8)                                                     │
00:00:32 #8239 [Verbose] > │     | UH13_1 -> (* StreamNil *)                                              │
00:00:32 #8240 [Verbose] > │         v1                                                                   │
00:00:32 #8241 [Verbose] > │ and method26 (v0 : (struct (string * (float []) * (float [])) [])) : (struct │
00:00:32 #8242 [Verbose] > │ (string * (float []) * (float [])) []) =                                     │
00:00:32 #8243 [Verbose] > │     v0                                                                       │
00:00:32 #8244 [Verbose] > │ and closure156 (v0 : UH14) () : UH14 =                                       │
00:00:32 #8245 [Verbose] > │     v0                                                                       │
00:00:32 #8246 [Verbose] > │ and method25 (v0 : UH13, v1 : UH14) : UH14 =                                 │
00:00:32 #8247 [Verbose] > │     match v0 with                                                            │
00:00:32 #8248 [Verbose] > │     | UH13_0(v2, v3, v4, v5) -> (* StreamCons *)                             │
00:00:32 #8249 [Verbose] > │         let v6 : UH13 = v5 ()                                                │
00:00:32 #8250 [Verbose] > │         let v7 : UH14 = method25(v6, v1)                                     │
00:00:32 #8251 [Verbose] > │         let v8 : string = $"{v2}"                                            │
00:00:32 #8252 [Verbose] > │         let v9 : (struct (string * (float []) * (float [])) []) = [|struct   │
00:00:32 #8253 [Verbose] > │ (v8, v3, v4)|]                                                               │
00:00:32 #8254 [Verbose] > │         let v10 : (struct (string * (float []) * (float [])) []) =           │
00:00:32 #8255 [Verbose] > │ method26(v9)                                                                 │
00:00:32 #8256 [Verbose] > │         let v11 : string = "wave"                                            │
00:00:32 #8257 [Verbose] > │         let v12 : string = "position (m)"                                    │
00:00:32 #8258 [Verbose] > │         let v13 : string = "displacement (m)"                                │
00:00:32 #8259 [Verbose] > │         let v14 : (unit -> UH14) = closure156(v7)                            │
00:00:32 #8260 [Verbose] > │         UH14_0(v11, v12, v13, v10, v14)                                      │
00:00:32 #8261 [Verbose] > │     | UH13_1 -> (* StreamNil *)                                              │
00:00:32 #8262 [Verbose] > │         v1                                                                   │
00:00:32 #8263 [Verbose] > │ and method27 (v0 : UH14, v1 : UH15) : UH15 =                                 │
00:00:32 #8264 [Verbose] > │     match v0 with                                                            │
00:00:32 #8265 [Verbose] > │     | UH14_0(v2, v3, v4, v5, v6) -> (* StreamCons *)                         │
00:00:32 #8266 [Verbose] > │         let v7 : UH14 = v6 ()                                                │
00:00:32 #8267 [Verbose] > │         let v8 : UH15 = method27(v7, v1)                                     │
00:00:32 #8268 [Verbose] > │         UH15_0(v2, v3, v4, v5, v8)                                           │
00:00:32 #8269 [Verbose] > │     | UH14_1 -> (* StreamNil *)                                              │
00:00:32 #8270 [Verbose] > │         v1                                                                   │
00:00:32 #8271 [Verbose] > │ and method29 (v0 : UH15, v1 : int32) : int32 =                               │
00:00:32 #8272 [Verbose] > │     match v0 with                                                            │
00:00:32 #8273 [Verbose] > │     | UH15_0(v2, v3, v4, v5, v6) -> (* Cons *)                               │
00:00:32 #8274 [Verbose] > │         let v7 : int32 = v1 + 1                                              │
00:00:32 #8275 [Verbose] > │         method29(v6, v7)                                                     │
00:00:32 #8276 [Verbose] > │     | UH15_1 -> (* Nil *)                                                    │
00:00:32 #8277 [Verbose] > │         v1                                                                   │
00:00:32 #8278 [Verbose] > │ and method30 (v0 : (struct (string * string * string * (struct (string *     │
00:00:32 #8279 [Verbose] > │ (float []) * (float [])) [])) []), v1 : UH15, v2 : int32) : int32 =          │
00:00:32 #8280 [Verbose] > │     match v1 with                                                            │
00:00:32 #8281 [Verbose] > │     | UH15_0(v3, v4, v5, v6, v7) -> (* Cons *)                               │
00:00:32 #8282 [Verbose] > │         v0.[int v2] <- struct (v3, v4, v5, v6)                               │
00:00:32 #8283 [Verbose] > │         let v8 : int32 = v2 + 1                                              │
00:00:32 #8284 [Verbose] > │         method30(v0, v7, v8)                                                 │
00:00:32 #8285 [Verbose] > │     | UH15_1 -> (* Nil *)                                                    │
00:00:32 #8286 [Verbose] > │         v2                                                                   │
00:00:32 #8287 [Verbose] > │ and method28 (v0 : UH15) : (struct (string * string * string * (struct       │
00:00:32 #8288 [Verbose] > │ (string * (float []) * (float [])) [])) []) =                                │
00:00:32 #8289 [Verbose] > │     let v1 : int32 = 0                                                       │
00:00:32 #8290 [Verbose] > │     let v2 : int32 = method29(v0, v1)                                        │
00:00:32 #8291 [Verbose] > │     let v3 : (struct (string * string * string * (struct (string * (float [  │
00:00:32 #8292 [Verbose] > │ ]) * (float [])) [])) []) = Array.zeroCreate<struct (string * string *       │
00:00:32 #8293 [Verbose] > │ string * (struct (string * (float []) * (float [])) []))> (v2)               │
00:00:32 #8294 [Verbose] > │     let v4 : int32 = 0                                                       │
00:00:32 #8295 [Verbose] > │     let v5 : int32 = method30(v3, v0, v4)                                    │
00:00:32 #8296 [Verbose] > │     v3                                                                       │
00:00:32 #8297 [Verbose] > │ and method0 () : (struct (string * string * string * (struct (string *       │
00:00:32 #8298 [Verbose] > │ (float []) * (float [])) [])) []) =                                          │
00:00:32 #8299 [Verbose] > │     let v0 : float = 0.0                                                     │
00:00:32 #8300 [Verbose] > │     let v1 : (unit -> UH0) = closure0()                                      │
00:00:32 #8301 [Verbose] > │     let v2 : UH0 = UH0_0(v0, v1)                                             │
00:00:32 #8302 [Verbose] > │     let v3 : float = 0.0                                                     │
00:00:32 #8303 [Verbose] > │     let v4 : float = 8.422578125E-06                                         │
00:00:32 #8304 [Verbose] > │     let v5 : float = 0.01                                                    │
00:00:32 #8305 [Verbose] > │     let v6 : float = 0.0007224452478461068                                   │
00:00:32 #8306 [Verbose] > │     let v7 : float = 0.0                                                     │
00:00:32 #8307 [Verbose] > │     let v8 : float = 0.0                                                     │
00:00:32 #8308 [Verbose] > │     let v9 : float = 0.0                                                     │
00:00:32 #8309 [Verbose] > │     let v10 : float = 0.0                                                    │
00:00:32 #8310 [Verbose] > │     let v11 : float = 0.0                                                    │
00:00:32 #8311 [Verbose] > │     let v12 : (unit -> UH1) = closure66()                                    │
00:00:32 #8312 [Verbose] > │     let v13 : UH1 = UH1_0(v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)         │
00:00:32 #8313 [Verbose] > │     let v14 : UH2 = UH2_1                                                    │
00:00:32 #8314 [Verbose] > │     let v15 : UH2 = method1(v13, v2, v14)                                    │
00:00:32 #8315 [Verbose] > │     let v16 : UH13 = UH13_1                                                  │
00:00:32 #8316 [Verbose] > │     let v17 : int32 = 0                                                      │
00:00:32 #8317 [Verbose] > │     let struct (v18 : UH13, v19 : int32) = method23(v15, v16, v17)           │
00:00:32 #8318 [Verbose] > │     let v20 : UH13 = UH13_1                                                  │
00:00:32 #8319 [Verbose] > │     let v21 : UH13 = method24(v18, v20)                                      │
00:00:32 #8320 [Verbose] > │     let v22 : UH14 = UH14_1                                                  │
00:00:32 #8321 [Verbose] > │     let v23 : UH14 = method25(v21, v22)                                      │
00:00:32 #8322 [Verbose] > │     let v24 : UH15 = UH15_1                                                  │
00:00:32 #8323 [Verbose] > │     let v25 : UH15 = method27(v23, v24)                                      │
00:00:32 #8324 [Verbose] > │     method28(v25)                                                            │
00:00:32 #8325 [Verbose] > │ method0()                                                                    │
00:00:32 #8326 [Verbose] > │                                                                              │
00:00:32 #8327 [Verbose] > │                                                                              │
00:00:32 #8328 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 #8329 [Verbose] >
00:00:32 #8330 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 #8331 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 #8332 [Verbose] > │ ## end                                                                       │
00:00:32 #8333 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 #8334 [Verbose] > [NbConvertApp] Converting notebook physics.dib.ipynb to html
00:00:32 #8335 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:32 #8336 [Verbose] >   validate(nb)
00:00:33 #8337 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:33 #8338 [Verbose] >   return _pygments_highlight(
00:00:36 #8339 [Verbose] > [NbConvertApp] Writing 2731940 bytes to physics.dib.html
00:00:36 #8340 [Debug] executeAsync / exitCode: 0 / output.Length: 732675
00:00:36 #8341 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: common.dib
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: console.dib
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: testing.dib
00:00:00 #1 [Debug] writeDibCode / output: Spi / path: math.dib
00:00:00 #4 [Debug] parseDibCode / output: Spi / file: math.dib
00:00:00 #3 [Debug] parseDibCode / output: Spi / file: console.dib
00:00:00 #3 [Debug] parseDibCode / output: Spi / file: testing.dib
00:00:00 #5 [Debug] parseDibCode / output: Spi / file: common.dib
00:00:00 #8 [Debug] writeDibCode / output: Spi / path: listm'.dib
00:00:00 #7 [Debug] writeDibCode / output: Spi / path: am'.dib
00:00:00 #9 [Debug] writeDibCode / output: Spi / path: benchmark.dib
00:00:00 #6 [Debug] writeDibCode / output: Spi / path: optionm'.dib
00:00:00 #11 [Debug] parseDibCode / output: Spi / file: am'.dib
00:00:00 #13 [Debug] parseDibCode / output: Spi / file: optionm'.dib
00:00:00 #10 [Debug] parseDibCode / output: Spi / file: listm'.dib
00:00:00 #13 [Debug] parseDibCode / output: Spi / file: benchmark.dib
00:00:00 #14 [Debug] writeDibCode / output: Spi / path: stream.dib
00:00:00 #16 [Debug] writeDibCode / output: Spi / path: seq.dib
00:00:00 #17 [Debug] parseDibCode / output: Spi / file: seq.dib
00:00:00 #16 [Debug] parseDibCode / output: Spi / file: stream.dib
00:00:00 #19 [Debug] writeDibCode / output: Spi / path: rust.dib
00:00:00 #20 [Debug] parseDibCode / output: Spi / file: rust.dib
00:00:00 #18 [Debug] writeDibCode / output: Spi / path: util.dib
00:00:00 #21 [Debug] parseDibCode / output: Spi / file: util.dib
00:00:00 #22 [Debug] writeDibCode / output: Spi / path: physics.dib
00:00:00 #23 [Debug] parseDibCode / output: Spi / file: physics.dib
In [ ]:
{ . "$ScriptDir/../apps/chat/build.ps1" } | Invoke-Block
 Downloading crates ...
  Downloaded cfg-if v0.1.10
  Downloaded data-encoding-macro v0.1.14
  Downloaded data-encoding-macro-internal v0.1.12
  Downloaded near-gas v0.2.5
  Downloaded ident_case v1.0.1
  Downloaded cfg_aliases v0.1.1
  Downloaded memory_units v0.4.0
  Downloaded borsh v1.3.1
  Downloaded Inflector v0.11.4
  Downloaded darling_core v0.20.8
  Downloaded borsh-derive v1.3.1
  Downloaded near-sdk-macros v5.0.0
  Downloaded toml_edit v0.21.1
  Downloaded proc-macro-crate v3.1.0
  Downloaded near-token v0.2.0
  Downloaded near-sys v0.2.1
  Downloaded multibase v0.9.1
  Downloaded near-sdk v5.0.0
  Downloaded darling v0.20.8
  Downloaded unsigned-varint v0.8.0
  Downloaded base-x v0.2.11
  Downloaded bs58 v0.5.0
  Downloaded syn_derive v0.1.8
  Downloaded darling_macro v0.20.8
  Downloaded wee_alloc v0.4.5
  Downloaded near-account-id v1.0.0
   Compiling proc-macro2 v1.0.78
   Compiling unicode-ident v1.0.12
   Compiling version_check v0.9.4
   Compiling equivalent v1.0.1
   Compiling hashbrown v0.14.3
   Compiling winnow v0.5.40
   Compiling proc-macro-error-attr v1.0.4
   Compiling proc-macro-error v1.0.4
   Compiling indexmap v2.2.3
   Compiling toml_datetime v0.6.5
   Compiling serde v1.0.197
   Compiling quote v1.0.35
   Compiling typenum v1.17.0
   Compiling syn v2.0.50
   Compiling toml_edit v0.21.1
   Compiling cfg_aliases v0.1.1
   Compiling borsh v1.3.1
   Compiling generic-array v0.14.7
   Compiling once_cell v1.19.0
   Compiling serde_json v1.0.114
   Compiling syn v1.0.109
   Compiling fnv v1.0.7
   Compiling ident_case v1.0.1
   Compiling rustversion v1.0.14
   Compiling proc-macro-crate v3.1.0
   Compiling darling_core v0.20.8
   Compiling heck v0.4.1
   Compiling itoa v1.0.10
   Compiling near-sdk-macros v5.0.0
   Compiling wee_alloc v0.4.5
   Compiling ryu v1.0.17
   Compiling data-encoding v2.5.0
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.6
   Compiling strum v0.26.1
   Compiling memory_units v0.4.0
   Compiling data-encoding-macro-internal v0.1.12
   Compiling cfg-if v0.1.10
   Compiling Inflector v0.11.4
   Compiling serde_derive v1.0.197
   Compiling syn_derive v0.1.8
   Compiling strum_macros v0.26.1
   Compiling darling_macro v0.20.8
   Compiling borsh-derive v1.3.1
   Compiling darling v0.20.8
   Compiling data-encoding-macro v0.1.14
   Compiling digest v0.10.7
   Compiling base64 v0.21.7
   Compiling near-sys v0.2.1
   Compiling bs58 v0.5.0
   Compiling base-x v0.2.11
   Compiling cfg-if v1.0.0
   Compiling sha2 v0.10.8
   Compiling multibase v0.9.1
   Compiling unsigned-varint v0.8.0
   Compiling near-gas v0.2.5
   Compiling near-account-id v1.0.0
   Compiling near-token v0.2.0
   Compiling near-sdk v5.0.0
   Compiling chat_contract v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract)
    Finished `release` profile [optimized] target(s) in 15.98s
 Downloading crates ...
  Downloaded crunchy v0.2.2
  Downloaded colored v2.1.0
  Downloaded async-stream-impl v0.3.5
  Downloaded base64 v0.13.1
  Downloaded c2-chacha v0.3.3
  Downloaded cargo-near v0.3.1
  Downloaded secp256k1 v0.27.0
  Downloaded serde_with_macros v3.6.1
  Downloaded toml v0.5.11
  Downloaded tokio-native-tls v0.3.1
  Downloaded foreign-types-shared v0.1.1
  Downloaded symbolic-common v8.8.0
  Downloaded clap v3.2.25
  Downloaded tracing-log v0.1.4
  Downloaded nom-supreme v0.6.0
  Downloaded near-vm-runner v0.20.1
  Downloaded borsh-derive-internal v0.9.3
  Downloaded near-jsonrpc-primitives v0.20.1
  Downloaded platforms v3.3.0
  Downloaded which v4.4.2
  Downloaded zip v0.5.13
  Downloaded near-workspaces v0.10.0
  Downloaded blake2 v0.9.2
  Downloaded zeropool-bn v0.5.11
  Downloaded ureq v2.9.6
  Downloaded rustls-webpki v0.102.2
  Downloaded petgraph v0.6.4
  Downloaded webpki-roots v0.26.1
  Downloaded rustls v0.22.2
  Downloaded gimli v0.26.2
  Downloaded sha3 v0.10.8
  Downloaded openssl v0.10.64
  Downloaded pdb v0.7.0
  Downloaded near-primitives v0.20.1
  Downloaded tracing-opentelemetry v0.17.4
  Downloaded prometheus v0.13.3
  Downloaded goblin v0.5.4
  Downloaded opentelemetry-otlp v0.10.0
  Downloaded wasmparser v0.83.0
  Downloaded secp256k1-sys v0.8.1
  Downloaded unicode-segmentation v1.11.0
  Downloaded tonic v0.6.2
  Downloaded tokio-util v0.6.10
  Downloaded symbolic-debuginfo v8.8.0
  Downloaded serde_with v3.6.1
  Downloaded num-bigint v0.3.3
  Downloaded unsafe-libyaml v0.2.10
  Downloaded near-parameters v0.20.1
  Downloaded hashbrown v0.11.2
  Downloaded xml-rs v0.8.19
  Downloaded libloading v0.7.4
  Downloaded ed25519-dalek v2.1.1
  Downloaded uuid v0.8.2
  Downloaded uint v0.9.5
  Downloaded os_str_bytes v6.6.1
  Downloaded near-stdx v0.20.1
  Downloaded num-rational v0.3.2
  Downloaded near-jsonrpc-client v0.8.0
  Downloaded keccak v0.1.5
  Downloaded near-crypto v0.20.1
  Downloaded ed25519 v2.2.3
  Downloaded proc-macro-crate v0.1.5
  Downloaded opentelemetry-semantic-conventions v0.9.0
  Downloaded serde_yaml v0.9.32
  Downloaded plain v0.2.3
  Downloaded openssl-macros v0.1.1
  Downloaded opaque-debug v0.3.0
  Downloaded native-tls v0.2.11
  Downloaded near-chain-configs v0.20.1
  Downloaded near-abi v0.3.0
  Downloaded treediff v4.0.3
  Downloaded prost-build v0.9.0
  Downloaded near-rpc-error-core v0.20.1
  Downloaded near-primitives-core v0.20.1
  Downloaded multimap v0.8.3
  Downloaded memmap2 v0.5.10
  Downloaded heck v0.3.3
  Downloaded near-o11y v0.20.1
  Downloaded near-config-utils v0.20.1
  Downloaded elementtree v0.7.0
  Downloaded dmsort v1.0.2
  Downloaded prost-types v0.9.0
  Downloaded prost-derive v0.9.0
  Downloaded prost v0.9.0
  Downloaded clap_lex v0.2.4
  Downloaded tokio-retry v0.3.0
  Downloaded primitive-types v0.10.1
  Downloaded tonic-build v0.6.2
  Downloaded tokio-io-timeout v1.2.0
  Downloaded textwrap v0.16.1
  Downloaded scroll v0.11.0
  Downloaded prefix-sum-vec v0.1.2
  Downloaded opentelemetry v0.17.0
  Downloaded near-sandbox-utils v0.7.0
  Downloaded near-rpc-error-macro v0.20.1
  Downloaded json-patch v1.2.0
  Downloaded hyper-timeout v0.4.1
  Downloaded tracing-futures v0.2.5
  Downloaded tracing-appender v0.2.3
  Downloaded strum_macros v0.24.3
  Downloaded serde_repr v0.1.18
  Downloaded near-fmt v0.20.1
  Downloaded json_comments v0.2.2
  Downloaded hyper-tls v0.5.0
  Downloaded fixedbitset v0.4.2
  Downloaded fallible-iterator v0.2.0
  Downloaded fixed-hash v0.7.0
  Downloaded smart-default v0.6.0
  Downloaded serde_derive_internals v0.26.0
  Downloaded schemars v0.8.16
  Downloaded rustc-hex v2.1.0
  Downloaded joinery v2.1.0
  Downloaded easy-ext v0.2.9
  Downloaded digest v0.9.0
  Downloaded strum v0.24.1
  Downloaded scroll_derive v0.11.1
  Downloaded schemars_derive v0.8.16
  Downloaded indent_write v2.2.0
  Downloaded env_logger v0.9.3
  Downloaded enum-map-derive v0.17.0
  Downloaded enum-map v2.7.3
  Downloaded debugid v0.7.3
  Downloaded curve25519-dalek-derive v0.1.1
  Downloaded scroll v0.10.2
  Downloaded rustls-pki-types v1.3.0
  Downloaded protobuf v2.28.0
  Downloaded foreign-types v0.3.2
  Downloaded dyn-clone v1.0.16
  Downloaded ripemd v0.1.3
  Downloaded reed-solomon-erasure v4.0.2
  Downloaded curve25519-dalek v4.1.2
  Downloaded crypto-mac v0.8.0
  Downloaded cc v1.0.86
  Downloaded bs58 v0.4.0
  Downloaded borsh-schema-derive-internal v0.9.3
  Downloaded borsh-derive v0.9.3
  Downloaded borsh v0.9.3
  Downloaded actix-macros v0.2.4
  Downloaded actix-rt v2.9.0
  Downloaded async-stream v0.3.5
  Downloaded assert_matches v1.5.0
  Downloaded derive_arbitrary v1.3.2
  Downloaded cargo_metadata v0.14.2
  Downloaded arbitrary v1.3.2
  Downloaded actix_derive v0.6.1
  Downloaded brownstone v1.1.0
  Downloaded cipher v0.2.5
  Downloaded actix v0.13.3
  Downloaded clap_derive v3.2.25
   Compiling libc v0.2.153
   Compiling version_check v0.9.4
   Compiling syn v2.0.50
   Compiling typenum v1.17.0
   Compiling generic-array v0.14.7
   Compiling serde v1.0.197
   Compiling syn v1.0.109
   Compiling cc v1.0.86
   Compiling pkg-config v0.3.30
   Compiling lock_api v0.4.11
   Compiling parking_lot_core v0.9.9
   Compiling scopeguard v1.2.0
   Compiling parking_lot v0.12.1
   Compiling memchr v2.7.1
   Compiling cfg-if v1.0.0
   Compiling anyhow v1.0.80
   Compiling bytes v1.5.0
   Compiling subtle v2.5.0
   Compiling signal-hook-registry v1.4.1
   Compiling socket2 v0.5.6
   Compiling num_cpus v1.16.0
   Compiling mio v0.8.10
   Compiling futures-core v0.3.30
   Compiling crypto-common v0.1.6
   Compiling block-buffer v0.10.4
   Compiling futures-sink v0.3.30
   Compiling hashbrown v0.14.3
   Compiling equivalent v1.0.1
   Compiling digest v0.10.7
   Compiling slab v0.4.9
   Compiling indexmap v2.2.3
   Compiling rustix v0.38.31
   Compiling proc-macro-error-attr v1.0.4
   Compiling serde_derive v1.0.197
   Compiling tokio-macros v2.2.0
   Compiling thiserror-impl v1.0.57
   Compiling tracing-attributes v0.1.27
   Compiling tokio v1.36.0
   Compiling thiserror v1.0.57
   Compiling bitflags v2.4.2
   Compiling linux-raw-sys v0.4.13
   Compiling tracing v0.1.40
   Compiling futures-channel v0.3.30
   Compiling proc-macro-error v1.0.4
   Compiling pin-utils v0.1.0
   Compiling futures-task v0.3.30
   Compiling cpufeatures v0.2.12
   Compiling futures-io v0.3.30
   Compiling futures-util v0.3.30
   Compiling zstd-sys v2.0.9+zstd.1.5.5
   Compiling crc32fast v1.4.0
   Compiling spin v0.5.2
   Compiling either v1.10.0
   Compiling once_cell v1.19.0
   Compiling serde_json v1.0.114
   Compiling lazy_static v1.4.0
   Compiling ring v0.17.8
   Compiling rand_chacha v0.3.1
   Compiling percent-encoding v2.3.1
   Compiling rand v0.8.5
   Compiling sha2 v0.10.8
   Compiling num-traits v0.2.18
   Compiling toml_datetime v0.6.5
   Compiling log v0.4.20
   Compiling winnow v0.5.40
   Compiling byteorder v1.5.0
   Compiling heck v0.4.1
   Compiling home v0.5.9
   Compiling itertools v0.10.5
   Compiling base64 v0.21.7
   Compiling cfg_aliases v0.1.1
   Compiling zstd-safe v5.0.2+zstd.1.5.2
   Compiling borsh v1.3.1
   Compiling syn_derive v0.1.8
   Compiling toml_edit v0.21.1
   Compiling prost-derive v0.9.0
   Compiling tokio-util v0.7.10
   Compiling pin-project-internal v1.1.4
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling fnv v1.0.7
   Compiling ident_case v1.0.1
   Compiling strsim v0.10.0
   Compiling proc-macro-crate v3.1.0
   Compiling crossbeam-utils v0.8.19
   Compiling semver v1.0.22
   Compiling pin-project v1.1.4
   Compiling darling_core v0.20.8
   Compiling http v0.2.11
   Compiling aho-corasick v1.1.2
   Compiling borsh-derive v1.3.1
   Compiling httparse v1.8.0
   Compiling rustversion v1.0.14
   Compiling darling_macro v0.20.8
   Compiling regex-automata v0.4.5
   Compiling which v4.4.2
   Compiling indexmap v1.9.3
   Compiling num-bigint v0.3.3
   Compiling async-trait v0.1.77
   Compiling regex-syntax v0.8.2
   Compiling tower-service v0.3.2
   Compiling getrandom v0.1.16
   Compiling rustls v0.22.2
   Compiling try-lock v0.2.5
   Compiling crunchy v0.2.2
   Compiling want v0.3.1
   Compiling regex v1.10.3
   Compiling prost-build v0.9.0
   Compiling crossbeam-channel v0.5.11
   Compiling rustc_version v0.4.0
   Compiling darling v0.20.8
   Compiling http-body v0.4.6
   Compiling h2 v0.3.24
   Compiling prost v0.9.0
   Compiling num-integer v0.1.46
   Compiling hex v0.4.3
   Compiling num-rational v0.3.2
   Compiling httpdate v1.0.3
   Compiling fixedbitset v0.4.2
   Compiling fastrand v2.0.1
   Compiling bs58 v0.4.0
   Compiling vcpkg v0.2.15
   Compiling unicode-segmentation v1.11.0
   Compiling hashbrown v0.12.3
   Compiling platforms v3.3.0
   Compiling powerfmt v0.2.0
   Compiling convert_case v0.4.0
   Compiling curve25519-dalek v4.1.2
   Compiling deranged v0.3.11
   Compiling derive_more v0.99.17
   Compiling openssl-sys v0.9.101
   Compiling heck v0.3.3
   Compiling tempfile v3.10.0
   Compiling petgraph v0.6.4
   Compiling hyper v0.14.28
   Compiling prost-types v0.9.0
   Compiling strum_macros v0.24.3
   Compiling serde_with_macros v3.6.1
   Compiling near-account-id v1.0.0
   Compiling tokio-stream v0.1.14
   Compiling enum-map-derive v0.17.0
   Compiling derive_arbitrary v1.3.2
   Compiling secp256k1-sys v0.8.1
   Compiling regex-syntax v0.6.29
   Compiling time-core v0.1.2
   Compiling multimap v0.8.3
   Compiling num-conv v0.1.0
   Compiling static_assertions v1.1.0
   Compiling time v0.3.34
   Compiling arbitrary v1.3.2
   Compiling enum-map v2.7.3
   Compiling rand_core v0.5.1
   Compiling regex-automata v0.1.10
   Compiling strum v0.24.1
   Compiling serde_with v3.6.1
   Compiling futures-executor v0.3.30
   Compiling curve25519-dalek-derive v0.1.1
   Compiling serde_repr v0.1.18
   Compiling fs2 v0.4.3
   Compiling tinyvec_macros v0.1.1
   Compiling utf8parse v0.2.1
   Compiling adler v1.0.2
   Compiling signature v2.2.0
   Compiling tinyvec v1.6.0
   Compiling miniz_oxide v0.7.2
   Compiling ed25519 v2.2.3
   Compiling anstyle-parse v0.2.3
   Compiling near-primitives-core v0.20.1
   Compiling opentelemetry v0.17.0
   Compiling matchers v0.1.0
   Compiling rand_chacha v0.2.2
   Compiling tonic-build v0.6.2
   Compiling uint v0.9.5
   Compiling fixed-hash v0.7.0
   Compiling sharded-slab v0.1.7
   Compiling tokio-io-timeout v1.2.0
   Compiling async-stream-impl v0.3.5
   Compiling crypto-mac v0.8.0
   Compiling getrandom v0.2.12
   Compiling cipher v0.2.5
   Compiling digest v0.9.0
   Compiling opaque-debug v0.3.0
   Compiling protobuf v2.28.0
   Compiling colorchoice v1.0.0
   Compiling anstyle v1.0.6
   Compiling tower-layer v0.3.2
   Compiling untrusted v0.9.0
   Compiling anstyle-query v1.0.2
   Compiling spin v0.9.8
   Compiling rustls-pki-types v1.3.0
   Compiling json_comments v0.2.2
   Compiling near-config-utils v0.20.1
   Compiling anstream v0.6.12
   Compiling tower v0.4.13
   Compiling async-stream v0.3.5
   Compiling blake2 v0.9.2
   Compiling tracing-subscriber v0.3.18
   Compiling c2-chacha v0.3.3
   Compiling hyper-timeout v0.4.1
   Compiling opentelemetry-otlp v0.10.0
   Compiling primitive-types v0.10.1
   Compiling ed25519-dalek v2.1.1
   Compiling rand v0.7.3
   Compiling flate2 v1.0.28
   Compiling unicode-normalization v0.1.23
   Compiling secp256k1 v0.27.0
   Compiling tracing-futures v0.2.5
   Compiling inout v0.1.3
   Compiling form_urlencoded v1.2.1
   Compiling tokio-util v0.6.10
   Compiling memoffset v0.8.0
   Compiling strsim v0.11.0
   Compiling siphasher v0.3.11
   Compiling base64ct v1.6.0
   Compiling unicode-bidi v0.3.15
   Compiling foreign-types-shared v0.1.1
   Compiling openssl v0.10.64
   Compiling prometheus v0.13.3
   Compiling base64 v0.13.1
   Compiling near-stdx v0.20.1
   Compiling rand_core v0.6.4
   Compiling unsafe-libyaml v0.2.10
   Compiling clap_lex v0.7.0
   Compiling clap_builder v4.5.1
   Compiling serde_yaml v0.9.32
   Compiling idna v0.5.0
   Compiling password-hash v0.4.2
   Compiling near-crypto v0.20.1
   Compiling tonic v0.6.2
   Compiling foreign-types v0.3.2
   Compiling cipher v0.4.4
   Compiling rustls-webpki v0.102.2
   Compiling hmac v0.12.1
   Compiling clap_derive v4.5.0
   Compiling futures v0.3.30
   Compiling actix-rt v2.9.0
   Compiling actix-macros v0.2.4
   Compiling openssl-macros v0.1.1
   Compiling actix_derive v0.6.1
   Compiling tracing-log v0.1.4
   Compiling ahash v0.7.8
   Compiling near-sandbox-utils v0.7.0
   Compiling keccak v0.1.5
   Compiling native-tls v0.2.11
   Compiling reed-solomon-erasure v4.0.2
   Compiling zeroize v1.7.0
   Compiling rustc-hex v2.1.0
   Compiling assert_matches v1.5.0
   Compiling near-parameters v0.20.1
   Compiling zeropool-bn v0.5.11
   Compiling sha3 v0.10.8
   Compiling actix v0.13.3
   Compiling chrono v0.4.34
   Compiling tracing-opentelemetry v0.17.4
   Compiling clap v4.5.1
   Compiling pbkdf2 v0.11.0
   Compiling aes v0.8.4
   Compiling url v2.5.0
   Compiling zstd v0.11.2+zstd.1.5.2
   Compiling bzip2 v0.4.4
   Compiling tracing-appender v0.2.3
   Compiling webpki-roots v0.26.1
   Compiling opentelemetry-semantic-conventions v0.9.0
   Compiling near-fmt v0.20.1
   Compiling sha1 v0.10.6
   Compiling near-rpc-error-core v0.20.1
   Compiling toml v0.5.11
   Compiling xattr v1.3.1
   Compiling ripemd v0.1.3
   Compiling serde_derive_internals v0.26.0
   Compiling filetime v0.2.23
   Compiling dirs-sys-next v0.1.2
   Compiling openssl-probe v0.1.5
   Compiling uuid v0.8.2
   Compiling prefix-sum-vec v0.1.2
   Compiling schemars v0.8.16
   Compiling constant_time_eq v0.1.5
   Compiling camino v1.1.6
   Compiling radium v0.7.0
   Compiling zip v0.6.6
   Compiling near-vm-runner v0.20.1
   Compiling ureq v2.9.6
   Compiling dirs-next v2.0.0
   Compiling schemars_derive v0.8.16
   Compiling tar v0.4.40
   Compiling proc-macro-crate v0.1.5
   Compiling near-rpc-error-macro v0.20.1
   Compiling near-o11y v0.20.1
   Compiling phf_shared v0.10.0
   Compiling bytesize v1.3.0
   Compiling smart-default v0.6.0
   Compiling scroll_derive v0.11.1
   Compiling borsh-derive-internal v0.9.3
   Compiling borsh-schema-derive-internal v0.9.3
   Compiling easy-ext v0.2.9
   Compiling pin-project-lite v0.2.13
   Compiling dyn-clone v1.0.16
   Compiling stable_deref_trait v1.2.0
   Compiling precomputed-hash v0.1.1
   Compiling iana-time-zone v0.1.60
   Compiling fallible-iterator v0.2.0
   Compiling tap v1.0.1
   Compiling new_debug_unreachable v1.0.4
   Compiling is_executable v0.1.2
   Compiling string_cache v0.8.7
   Compiling binary-install v0.2.0
   Compiling brownstone v1.1.0
   Compiling nom v7.1.3
   Compiling wyz v0.5.1
   Compiling near-primitives v0.20.1
   Compiling scroll v0.11.0
   Compiling borsh-derive v0.9.3
   Compiling hashbrown v0.11.2
   Compiling tokio-native-tls v0.3.1
   Compiling debugid v0.7.3
   Compiling cargo-platform v0.1.7
   Compiling memmap2 v0.5.10
   Compiling atty v0.2.14
   Compiling termcolor v1.4.1
   Compiling xml-rs v0.8.19
   Compiling funty v2.0.0
   Compiling scroll v0.10.2
   Compiling joinery v2.1.0
   Compiling plain v0.2.3
   Compiling os_str_bytes v6.6.1
   Compiling indent_write v2.2.0
   Compiling nom-supreme v0.6.0
   Compiling clap_lex v0.2.4
   Compiling bitvec v1.0.1
   Compiling goblin v0.5.4
   Compiling elementtree v0.7.0
   Compiling pdb v0.7.0
   Compiling near-chain-configs v0.20.1
   Compiling symbolic-common v8.8.0
   Compiling hyper-tls v0.5.0
   Compiling borsh v0.9.3
   Compiling gimli v0.26.2
   Compiling serde_urlencoded v0.7.1
   Compiling zip v0.5.13
   Compiling rustls-pemfile v1.0.4
   Compiling clap_derive v3.2.25
   Compiling encoding_rs v0.8.33
   Compiling humantime v2.1.0
   Compiling sync_wrapper v0.1.2
   Compiling bitflags v1.3.2
   Compiling lazycell v1.3.0
   Compiling dmsort v1.0.2
   Compiling mime v0.3.17
   Compiling ipnet v2.9.0
   Compiling textwrap v0.16.1
   Compiling wasmparser v0.83.0
   Compiling reqwest v0.11.24
   Compiling clap v3.2.25
   Compiling symbolic-debuginfo v8.8.0
   Compiling env_logger v0.9.3
   Compiling near-abi v0.3.0
   Compiling near-workspaces v0.10.0
   Compiling near-jsonrpc-primitives v0.20.1
   Compiling cargo_metadata v0.14.2
   Compiling treediff v4.0.3
   Compiling colored v2.1.0
   Compiling libloading v0.7.4
   Compiling cargo-near v0.3.1
   Compiling json-patch v1.2.0
   Compiling near-jsonrpc-client v0.8.0
   Compiling cargo_metadata v0.18.1
   Compiling near-gas v0.2.5
   Compiling tokio-retry v0.3.0
   Compiling near-token v0.2.0
   Compiling bs58 v0.5.0
   Compiling chat_contract_tests v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract/tests)
    Finished `release` profile [optimized] target(s) in 2m 24s
     Running `/home/runner/work/polyglot/polyglot/target/release/chat_contract_tests`
Installed near-sandbox into /home/runner/work/polyglot/polyglot/target/release/build/near-sandbox-utils-845978b5c9afa1dc/out/near-sandbox
Updated the logging layer according to `log_config.json`


new: ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 5283438367536,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 4De5J1k4yDgPPo1mcFfjxoUimdNg2ZoaMFAzD4Vx49VN,
        block_hash: 5hDYyzNarobmHPgsXBTfxaViKC9hM6xjn8Pf4ZRsEhWd,
        logs: [],
        receipt_ids: [
            GRiYFXSj8xxQoBoAVtntAri7xuf2cM7M1QKiM5b5Xmga,
        ],
        gas_burnt: NearGas {
            inner: 2427927707802,
        },
        tokens_burnt: NearToken {
            inner: 242792770780200000000,
        },
        executor_id: AccountId(
            "dev-20240226211115-54270929829756",
        ),
        status: SuccessReceiptId(GRiYFXSj8xxQoBoAVtntAri7xuf2cM7M1QKiM5b5Xmga),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: GRiYFXSj8xxQoBoAVtntAri7xuf2cM7M1QKiM5b5Xmga,
            block_hash: 5hDYyzNarobmHPgsXBTfxaViKC9hM6xjn8Pf4ZRsEhWd,
            logs: [],
            receipt_ids: [
                bqBAWEzULs71kqAXi2R1uBcWn8HH9Jsf9Q7wwxUbF6M,
            ],
            gas_burnt: NearGas {
                inner: 2632328097234,
            },
            tokens_burnt: NearToken {
                inner: 263232809723400000000,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: bqBAWEzULs71kqAXi2R1uBcWn8HH9Jsf9Q7wwxUbF6M,
            block_hash: DeUqqqxP1SCHbNZ5Y1MvBMisXD8GUZabQNz7RoQEQaYU,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.003529336829514048
outcome (success: true):
  outcome_gas_burnt_usd: 0.001621855708811736
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0017583951689523118
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


claim_alias(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 5288183078626,
    },
    transaction: ExecutionOutcome {
        transaction_hash: FS37tTfs63EhA8WoP3oNJHQrLQE2M62Vp1U3CW2rm5YM,
        block_hash: aH6SSbc6L1Fdm7qmqvVHRKt42p623zd2mqMmy59WQb8,
        logs: [],
        receipt_ids: [
            AARsifxhJJqXN7pNxfrKL4jwcq6etsVro7i89wkWnbRp,
        ],
        gas_burnt: NearGas {
            inner: 2427972426482,
        },
        tokens_burnt: NearToken {
            inner: 242797242648200000000,
        },
        executor_id: AccountId(
            "dev-20240226211115-54270929829756",
        ),
        status: SuccessReceiptId(AARsifxhJJqXN7pNxfrKL4jwcq6etsVro7i89wkWnbRp),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: AARsifxhJJqXN7pNxfrKL4jwcq6etsVro7i89wkWnbRp,
            block_hash: aH6SSbc6L1Fdm7qmqvVHRKt42p623zd2mqMmy59WQb8,
            logs: [
                "claim_alias / alias: \"\" / account_id: AccountId(\n    \"dev-20240226211115-54270929829756\",\n) / timestamp: 1708981878056653486",
            ],
            receipt_ids: [
                FHbMEyhDWUNgqJ5KmhDsnwokYTmzkvs3CWdjQZEigTMi,
            ],
            gas_burnt: NearGas {
                inner: 2637028089644,
            },
            tokens_burnt: NearToken {
                inner: 263702808964400000000,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: Invalid alias")) })),
        },
        ExecutionOutcome {
            transaction_hash: FHbMEyhDWUNgqJ5KmhDsnwokYTmzkvs3CWdjQZEigTMi,
            block_hash: 5MkTJTBD82yhsZd5XdDfUwqtvFpvwh61nSyZCY1zjpzX,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
    ],
    status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: Invalid alias")) })),
}
total_gas_burnt_usd: 0.003532506296522168
outcome (success: true):
  outcome_gas_burnt_usd: 0.001621885580889976
  outcome_tokens_burnt_usd: 0.0
outcome (success: false):
  outcome_gas_burnt_usd: 0.001761534763882192
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


dev_create_account(account1): Account {
    id: AccountId(
        "dev-20240226211118-70744970538852",
    ),
}


generate_cid_borsh(account1): ViewResultDetails {
    result: [
        59,
        0,
        0,
        0,
        98,
        97,
        102,
        107,
        114,
        101,
        105,
        104,
        100,
        119,
        100,
        99,
        101,
        102,
        103,
        104,
        52,
        100,
        113,
        107,
        106,
        118,
        54,
        55,
        117,
        122,
        99,
        109,
        119,
        55,
        111,
        106,
        101,
        101,
        54,
        120,
        101,
        100,
        122,
        100,
        101,
        116,
        111,
        106,
        117,
        122,
        106,
        101,
        118,
        116,
        101,
        110,
        120,
        113,
        117,
        118,
        121,
        107,
        117,
    ],
    logs: [],
}


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 5710111297699,
    },
    transaction: ExecutionOutcome {
        transaction_hash: G883MYA52tiCZ4Hop2kh3zKHGKY8tscrUh4Kn96ZtA5A,
        block_hash: HXcQAUfTPSKqxY6CMUe2AwtevpyQfXq4cjzTiqvjiNmG,
        logs: [],
        receipt_ids: [
            4z3hoTL9WsC9ZVHe6gBDuAeQJ2ZShAo8PyNGc9Z6W4no,
        ],
        gas_burnt: NearGas {
            inner: 2427985842086,
        },
        tokens_burnt: NearToken {
            inner: 242798584208600000000,
        },
        executor_id: AccountId(
            "dev-20240226211118-70744970538852",
        ),
        status: SuccessReceiptId(4z3hoTL9WsC9ZVHe6gBDuAeQJ2ZShAo8PyNGc9Z6W4no),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 4z3hoTL9WsC9ZVHe6gBDuAeQJ2ZShAo8PyNGc9Z6W4no,
            block_hash: 7Bjo75TQooYM7BoSohh9Jot7bJiHBBMPygP3w4Eh8NsN,
            logs: [
                "claim_alias / alias: \"alias1\" / account_id: AccountId(\n    \"dev-20240226211118-70744970538852\",\n) / timestamp: 1708981880280086610",
            ],
            receipt_ids: [
                337NX2NzPMmHnVCxoWKW3yMncr7gbdZnKyUzVvokdcKd,
            ],
            gas_burnt: NearGas {
                inner: 3058942893113,
            },
            tokens_burnt: NearToken {
                inner: 305894289311300000000,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 337NX2NzPMmHnVCxoWKW3yMncr7gbdZnKyUzVvokdcKd,
            block_hash: CEfTr7ytKogWwReXEtxXicqD15si43quSv6SCbB9wcbX,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240226211118-70744970538852",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0038143543468629314
outcome (success: true):
  outcome_gas_burnt_usd: 0.0016218945425134478
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.002043373852599484
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 5534438360764,
    },
    transaction: ExecutionOutcome {
        transaction_hash: BGsyRNrh4bj9wZJRFUbXhZS4Za6Dx4qTKJngZqSShESh,
        block_hash: 7MdjPkH3oKgk18PXJpE7ZyHyiMA3CnxR7WCmj3SZEa3K,
        logs: [],
        receipt_ids: [
            3sAXGYcMrs7eHr3fN5xTe7hyW3xevwNLnTFkiMuybJU6,
        ],
        gas_burnt: NearGas {
            inner: 2427985842086,
        },
        tokens_burnt: NearToken {
            inner: 242798584208600000000,
        },
        executor_id: AccountId(
            "dev-20240226211118-70744970538852",
        ),
        status: SuccessReceiptId(3sAXGYcMrs7eHr3fN5xTe7hyW3xevwNLnTFkiMuybJU6),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 3sAXGYcMrs7eHr3fN5xTe7hyW3xevwNLnTFkiMuybJU6,
            block_hash: BMozetDo6e8XvipmydrTAxU4gXtpU9Rsx2CiNzKVMJCf,
            logs: [
                "claim_alias / alias: \"alias1\" / account_id: AccountId(\n    \"dev-20240226211118-70744970538852\",\n) / timestamp: 1708981881289803037",
                "Alias already claimed",
            ],
            receipt_ids: [
                8qgC33yT4kEDHngrJ9aJ32EPq4wykR6GPc9n6fTWqNd2,
            ],
            gas_burnt: NearGas {
                inner: 2883269956178,
            },
            tokens_burnt: NearToken {
                inner: 288326995617800000000,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 8qgC33yT4kEDHngrJ9aJ32EPq4wykR6GPc9n6fTWqNd2,
            block_hash: 4S5mtg8ERLbStwnXkWvSGg4bZRUyLqKUxpbExVbfpB1D,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240226211118-70744970538852",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.003697004824990352
outcome (success: true):
  outcome_gas_burnt_usd: 0.0016218945425134478
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.001926024330726904
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        (
            1708981880280086610,
            0,
        ),
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20240226211118-70744970538852",
        ): (
            1708981880280086610,
            0,
        ),
    },
)


dev_create_account(account2): Account {
    id: AccountId(
        "dev-20240226211121-60473600811865",
    ),
}


claim_alias(alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 5797461077329,
    },
    transaction: ExecutionOutcome {
        transaction_hash: CqQ9TfBb9EhihDAZdCVEeGCyPgzHfBQcuALxo4xmkwqM,
        block_hash: 6a9VrBCdCM3iZd778ARuN1nL466uF3ZvSvyzHBmh3BUu,
        logs: [],
        receipt_ids: [
            62HrJTFzvFBfget88UAR1stL4cHyowYMEvCMzSnSKjFo,
        ],
        gas_burnt: NearGas {
            inner: 2427985842086,
        },
        tokens_burnt: NearToken {
            inner: 242798584208600000000,
        },
        executor_id: AccountId(
            "dev-20240226211121-60473600811865",
        ),
        status: SuccessReceiptId(62HrJTFzvFBfget88UAR1stL4cHyowYMEvCMzSnSKjFo),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 62HrJTFzvFBfget88UAR1stL4cHyowYMEvCMzSnSKjFo,
            block_hash: 4FhJfKA2QjEEZwmMqzcyK4Y1xmTZ75i5wwNYXb1exnbp,
            logs: [
                "claim_alias / alias: \"alias2\" / account_id: AccountId(\n    \"dev-20240226211121-60473600811865\",\n) / timestamp: 1708981883310058330",
            ],
            receipt_ids: [
                8SMotLbkjLnqzLXz7Ebbxr7E4XEspDxEKkwDVMeEpCvG,
            ],
            gas_burnt: NearGas {
                inner: 3146292672743,
            },
            tokens_burnt: NearToken {
                inner: 314629267274300000000,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 8SMotLbkjLnqzLXz7Ebbxr7E4XEspDxEKkwDVMeEpCvG,
            block_hash: AqeD74UUk4ctgCUovZbgVdEbkdB7gVNZB94EMcFJVieB,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240226211121-60473600811865",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0038727039996557717
outcome (success: true):
  outcome_gas_burnt_usd: 0.0016218945425134478
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0021017235053923237
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias2",
        (
            1708981883310058330,
            0,
        ),
    ),
)


get_alias_map_borsh(alias2): Some(
    {
        AccountId(
            "dev-20240226211121-60473600811865",
        ): (
            1708981883310058330,
            0,
        ),
    },
)


claim_alias(account2, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 6101645555200,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 7hdMjHrqHcWYEhQNGnYJicrGmbXEnR9BaK2KXKRrUHZJ,
        block_hash: 3SwBmT2C1K5uGAbPZ7ujW5gqjrp4WLp4UJHSwwqCJTHu,
        logs: [],
        receipt_ids: [
            Foy8uSwyT1aeT8eoSQg7Dk6bGLnn2KweZjHRXyxMUyCd,
        ],
        gas_burnt: NearGas {
            inner: 2427985842086,
        },
        tokens_burnt: NearToken {
            inner: 242798584208600000000,
        },
        executor_id: AccountId(
            "dev-20240226211121-60473600811865",
        ),
        status: SuccessReceiptId(Foy8uSwyT1aeT8eoSQg7Dk6bGLnn2KweZjHRXyxMUyCd),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: Foy8uSwyT1aeT8eoSQg7Dk6bGLnn2KweZjHRXyxMUyCd,
            block_hash: BEyfzRMBUWQiZcRLkR25oquAfLv3vawU2LzWeYgacRJT,
            logs: [
                "claim_alias / alias: \"alias1\" / account_id: AccountId(\n    \"dev-20240226211121-60473600811865\",\n) / timestamp: 1708981884321404025",
            ],
            receipt_ids: [
                B9FZ5sHoLKCRCrKMEKCyREvKFxvDYPXU9JnLtin747Vc,
            ],
            gas_burnt: NearGas {
                inner: 3450477150614,
            },
            tokens_burnt: NearToken {
                inner: 345047715061400000000,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: B9FZ5sHoLKCRCrKMEKCyREvKFxvDYPXU9JnLtin747Vc,
            block_hash: CwKxuwVWjS8PvqMR7LKqZZaEFQEzEAsW1XRRChp6egsC,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240226211121-60473600811865",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0040758992308736
outcome (success: true):
  outcome_gas_burnt_usd: 0.0016218945425134478
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0023049187366101518
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias1",
        (
            1708981884321404025,
            1,
        ),
    ),
)


get_alias_map(account2, alias1): Some(
    {
        AccountId(
            "dev-20240226211118-70744970538852",
        ): (
            1708981880280086610,
            0,
        ),
        AccountId(
            "dev-20240226211121-60473600811865",
        ): (
            1708981884321404025,
            1,
        ),
    },
)


get_alias_map(account2, alias2): Some(
    {},
)


claim_alias(account1, alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 6096339601756,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 7H42PwVePZCmBL4TFgX7W1FxmKovjUJXZrJ9yXTAjNY7,
        block_hash: 8cK3x7VtTiBKcyqcdTkZUqiQP9q6oHZNNKcJdqCWiHUi,
        logs: [],
        receipt_ids: [
            2DG1Yg6urB7v9gd2tkmGbySJiNRJHhZSBMhihgwfnGJe,
        ],
        gas_burnt: NearGas {
            inner: 2427985842086,
        },
        tokens_burnt: NearToken {
            inner: 242798584208600000000,
        },
        executor_id: AccountId(
            "dev-20240226211118-70744970538852",
        ),
        status: SuccessReceiptId(2DG1Yg6urB7v9gd2tkmGbySJiNRJHhZSBMhihgwfnGJe),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 2DG1Yg6urB7v9gd2tkmGbySJiNRJHhZSBMhihgwfnGJe,
            block_hash: CciRSTgCrAWevQ1z5skpmtTsxEhmDqZxhkxfFGBXLXJD,
            logs: [
                "claim_alias / alias: \"alias2\" / account_id: AccountId(\n    \"dev-20240226211118-70744970538852\",\n) / timestamp: 1708981885332362719",
            ],
            receipt_ids: [
                GBZhBSkbf5akvUZnR7J3pW6r7PR9rLyJSkgD9JsnH8Zp,
            ],
            gas_burnt: NearGas {
                inner: 3445171197170,
            },
            tokens_burnt: NearToken {
                inner: 344517119717000000000,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: GBZhBSkbf5akvUZnR7J3pW6r7PR9rLyJSkgD9JsnH8Zp,
            block_hash: 7kZLgRGjgqHARoBf2Lg79zQVz7B9vKnWLptpjQKu7f5w,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240226211118-70744970538852",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.004072354853973008
outcome (success: true):
  outcome_gas_burnt_usd: 0.0016218945425134478
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00230137435970956
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias2",
        (
            1708981885332362719,
            0,
        ),
    ),
)


get_alias_map(account1, alias2): Some(
    {
        AccountId(
            "dev-20240226211118-70744970538852",
        ): (
            1708981885332362719,
            0,
        ),
    },
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20240226211121-60473600811865",
        ): (
            1708981884321404025,
            1,
        ),
    },
)


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 6101645555200,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 6whEtquuZuiQ5HCXMihh7yarWpY2GdxQXrx7YnFSaKty,
        block_hash: CmMjLxehZyfp3Vkie3LHFgCeaUMP22ta7Bb7gkZcmBoP,
        logs: [],
        receipt_ids: [
            3j5CDyWxpLi8PkRngMDb85QxQfnQNFueY9d5U5o4C5HZ,
        ],
        gas_burnt: NearGas {
            inner: 2427985842086,
        },
        tokens_burnt: NearToken {
            inner: 242798584208600000000,
        },
        executor_id: AccountId(
            "dev-20240226211118-70744970538852",
        ),
        status: SuccessReceiptId(3j5CDyWxpLi8PkRngMDb85QxQfnQNFueY9d5U5o4C5HZ),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 3j5CDyWxpLi8PkRngMDb85QxQfnQNFueY9d5U5o4C5HZ,
            block_hash: D7SMvdPqySaxJVPt5d9trd2K1hXhnKJAdsxwmWYLEMz7,
            logs: [
                "claim_alias / alias: \"alias1\" / account_id: AccountId(\n    \"dev-20240226211118-70744970538852\",\n) / timestamp: 1708981886341977195",
            ],
            receipt_ids: [
                LzUNrSf1SxTF2G1ip8kG8Jbnkg5TuVLShb34TVQokev,
            ],
            gas_burnt: NearGas {
                inner: 3450477150614,
            },
            tokens_burnt: NearToken {
                inner: 345047715061400000000,
            },
            executor_id: AccountId(
                "dev-20240226211115-54270929829756",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: LzUNrSf1SxTF2G1ip8kG8Jbnkg5TuVLShb34TVQokev,
            block_hash: DKSjvsucHNhRqGQAhjzcJMf2YouvoZzpTCDRiZpz68wa,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240226211118-70744970538852",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0040758992308736
outcome (success: true):
  outcome_gas_burnt_usd: 0.0016218945425134478
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0023049187366101518
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        (
            1708981886341977195,
            1,
        ),
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20240226211118-70744970538852",
        ): (
            1708981886341977195,
            1,
        ),
        AccountId(
            "dev-20240226211121-60473600811865",
        ): (
            1708981884321404025,
            0,
        ),
    },
)


get_alias_map(account1, alias2): Some(
    {},
)
In [ ]:
{ . "$ScriptDir/../apps/spiral/temp/extension/build.ps1" } | Invoke-Block
Lockfile is up to date, resolution step is skipped
Progress: resolved 1, reused 0, downloaded 0, added 0
Packages: +309
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 309, reused 299, downloaded 10, added 309, done

dependencies:
+ buffer 6.0.3

devDependencies:
+ @playwright/test 1.41.2
+ @types/chrome 0.0.261
+ npm-check-updates 16.14.11

Done in 1.1s
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
   Compiling proc-macro2 v1.0.78
   Compiling unicode-ident v1.0.12
   Compiling serde v1.0.197
   Compiling autocfg v1.1.0
   Compiling once_cell v1.19.0
   Compiling wasm-bindgen-shared v0.2.91
   Compiling cfg-if v1.0.0
   Compiling log v0.4.20
   Compiling bumpalo v3.15.3
   Compiling wasm-bindgen v0.2.91
   Compiling version_check v0.9.4
   Compiling thiserror v1.0.57
   Compiling memchr v2.7.1
   Compiling quote v1.0.35
   Compiling futures-core v0.3.30
   Compiling itoa v1.0.10
   Compiling syn v2.0.50
   Compiling pin-project-lite v0.2.13
   Compiling futures-sink v0.3.30
   Compiling lock_api v0.4.11
   Compiling futures-channel v0.3.30
   Compiling slab v0.4.9
   Compiling ryu v1.0.17
   Compiling parking_lot_core v0.9.9
   Compiling serde_json v1.0.114
   Compiling hashbrown v0.14.3
   Compiling smallvec v1.13.1
   Compiling pin-utils v0.1.0
   Compiling futures-io v0.3.30
   Compiling libc v0.2.153
   Compiling futures-task v0.3.30
   Compiling unicode-xid v0.2.4
   Compiling const_format_proc_macros v0.2.32
   Compiling proc-macro-error-attr v1.0.4
   Compiling tinyvec_macros v0.1.1
   Compiling percent-encoding v2.3.1
   Compiling equivalent v1.0.1
   Compiling indexmap v2.2.3
   Compiling tinyvec v1.6.0
   Compiling proc-macro-error v1.0.4
   Compiling bytes v1.5.0
   Compiling unicode-segmentation v1.11.0
   Compiling fnv v1.0.7
   Compiling convert_case v0.6.0
   Compiling const_format v0.2.32
   Compiling unicode-normalization v0.1.23
   Compiling wasm-bindgen-backend v0.2.91
   Compiling form_urlencoded v1.2.1
   Compiling proc-macro-utils v0.8.0
   Compiling proc-macro2-diagnostics v0.10.1
   Compiling xxhash-rust v0.8.10
   Compiling unicode-bidi v0.3.15
   Compiling manyhow-macros v0.8.1
   Compiling wasm-bindgen-macro-support v0.2.91
   Compiling idna v0.5.0
   Compiling server_fn_macro v0.6.6
   Compiling http v0.2.11
   Compiling slotmap v1.0.7
   Compiling half v2.3.1
   Compiling camino v1.1.6
   Compiling paste v1.0.14
   Compiling scopeguard v1.2.0
   Compiling yansi v1.0.0-rc.1
   Compiling serde_derive v1.0.197
   Compiling wasm-bindgen-macro v0.2.91
   Compiling thiserror-impl v1.0.57
   Compiling futures-macro v0.3.30
   Compiling js-sys v0.3.68
   Compiling futures-util v0.3.30
   Compiling pin-project-internal v1.1.4
   Compiling futures-executor v0.3.30
   Compiling web-sys v0.3.68
   Compiling wasm-bindgen-futures v0.4.41
   Compiling pin-project v1.1.4
   Compiling tracing-attributes v0.1.27
   Compiling derive-where v1.2.7
   Compiling futures v0.3.30
   Compiling ciborium-io v0.2.2
   Compiling anyhow v1.0.80
   Compiling quote-use-macros v0.7.2
   Compiling toml_datetime v0.6.5
   Compiling serde_spanned v0.6.5
   Compiling ciborium-ll v0.2.2
   Compiling syn_derive v0.1.8
   Compiling quote-use v0.7.2
   Compiling url v2.5.0
   Compiling manyhow v0.8.1
   Compiling tracing-core v0.1.32
   Compiling interpolator v0.5.0
   Compiling winnow v0.6.2
   Compiling prettyplease v0.2.16
   Compiling collection_literals v1.0.1
   Compiling same-file v1.0.6
   Compiling walkdir v2.4.0
   Compiling attribute-derive-macro v0.8.1
   Compiling tracing v0.1.40
   Compiling rstml v0.11.2
   Compiling toml_edit v0.22.6
   Compiling parking_lot v0.12.1
   Compiling dashmap v5.5.3
   Compiling ciborium v0.2.2
   Compiling serde-wasm-bindgen v0.6.4
   Compiling serde_qs v0.12.0
   Compiling server_fn_macro_default v0.6.6
   Compiling getrandom v0.2.12
   Compiling http v1.0.0
   Compiling aho-corasick v1.1.2
   Compiling send_wrapper v0.6.0
   Compiling lazy_static v1.4.0
   Compiling utf8-width v0.1.7
   Compiling base64 v0.21.7
   Compiling regex-syntax v0.8.2
   Compiling gloo-utils v0.2.0
   Compiling gloo-net v0.5.0
   Compiling self_cell v1.0.3
   Compiling minimal-lexical v0.2.1
   Compiling either v1.10.0
   Compiling rustc-hash v1.1.0
   Compiling leptos_reactive v0.6.6
   Compiling itertools v0.12.1
   Compiling regex-automata v0.4.5
   Compiling nom v7.1.3
   Compiling wasm-streams v0.4.0
   Compiling server_fn v0.6.6
   Compiling html-escape v0.2.13
   Compiling uuid v1.7.0
   Compiling leptos_hot_reload v0.6.6
   Compiling toml v0.8.10
   Compiling attribute-derive v0.8.1
   Compiling typed-builder-macro v0.18.1
   Compiling pathdiff v0.2.1
   Compiling leptos_macro v0.6.6
   Compiling config v0.14.0
   Compiling regex v1.10.3
   Compiling typed-builder v0.18.1
   Compiling async-recursion v1.0.5
   Compiling drain_filter_polyfill v0.1.3
   Compiling inventory v0.3.15
   Compiling pad-adapter v0.1.1
   Compiling leptos_config v0.6.6
   Compiling num-traits v0.2.18
   Compiling cfg_aliases v0.1.1
   Compiling borsh v1.3.1
   Compiling leptos_dom v0.6.6
   Compiling gloo-utils v0.1.7
   Compiling serde_test v1.0.176
   Compiling linear-map v1.2.0
   Compiling gloo-net v0.2.6
   Compiling serde_urlencoded v0.7.1
   Compiling tokio v1.36.0
   Compiling tower-service v0.3.2
   Compiling leptos_server v0.6.6
   Compiling base64 v0.13.1
   Compiling console_log v1.0.0
   Compiling reqwest-wasm v0.11.16
   Compiling console_error_panic_hook v0.1.7
   Compiling rexie v0.5.0
   Compiling leptos v0.6.6
   Compiling leptos_router v0.6.6
   Compiling leptos_meta v0.6.6
   Compiling spiral_temp_extension v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.50s
[INFO]: ⬇️  Installing wasm-bindgen...
[INFO]: origin crate has no LICENSE
[INFO]: ✨   Done in 1m 58s
[INFO]: 📦   Your wasm pkg is ready to publish at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/pkg.
▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta]

    pkg/spiral_temp_extension.js:1496:57:
      1496 │ ...put = new URL('spiral_temp_extension_bg.wasm', import.meta.url);
           ╵                                                   ~~~~~~~~~~~

  You need to set the output format to "esm" for "import.meta" to work correctly.

1 warning

  dist/spiral_temp_extension_bg-4NASDEXQ.wasm   4.6mb ⚠️
  dist/devtools.js                             29.0kb
  dist/content_script.js                       27.2kb
  dist/service_worker.js                        2.2kb

⚡ Done in 33ms

> polyglot@ test:e2e /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
> playwright test

[WebServer] npm[WebServer]  WARN exec The following package was not found and will be installed: serve@14.2.1
[WebServer] (node:155434) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

Running 3 tests using 2 workers
···
  3 passed (10.2s)
In [ ]:
{ . "$ScriptDir/../apps/perf/build.ps1" } | Invoke-Block
00:00:00 #1 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #2 [Debug] executeAsync / options: { Command =
   "dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = Some <fun:main@450-1020> }
00:00:00 #3 [Verbose] > pwd: /home/runner/work/polyglot/polyglot/apps/perf
00:00:00 #4 [Verbose] > dll_path: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release
00:00:00 #5 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #6 [Verbose] waitForPortAccess / port: 13805 / retry: 0
00:00:00 #7 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #8 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #9 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #10 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #11 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #12 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #13 [Verbose] > Starting the Spiral Server. It is bound to: http://localhost:13805
00:00:00 #14 [Verbose] testPortOpen / ex: System.AggregateException: One or more errors occurred. (Connection refused)
00:00:00 #15 [Debug] sendJson / port: 13805 / json: {"Ping":true} / result.Length:
00:00:00 #16 [Verbose] awaitCompiler / Ping / result: Some(null) / port: 13805 / retry: 0
00:00:00 #17 [Verbose] > Server bound to: http://localhost:13805
00:00:00 #18 [Debug] executeAsync / options: { Command = "pwsh -c "../../scripts/invoke-dib.ps1 Perf.dib""
  WorkingDirectory = None
  CancellationToken = Some System.Threading.CancellationToken
  OnLine = None }
00:00:02 #19 [Verbose] >
00:00:02 #20 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 #21 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 #22 [Verbose] > │ ## Perf (Polyglot)                                                           │
00:00:02 #23 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 #24 [Verbose] >
00:00:02 #25 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:02 #26 [Verbose] > // // test
00:00:02 #27 [Verbose] >
00:00:02 #28 [Verbose] > open testing
00:00:02 #29 [Verbose] > open benchmark
00:00:04 #30 [Verbose] > Building /tmp/!dotnet-repl/20240226-2113-4326-2617-25ec0e88abd8/main.spi
00:00:05 #31 [Verbose] >
00:00:05 #32 [Verbose] > ╭─[ 3.46s - stdout ]───────────────────────────────────────────────────────────╮
00:00:05 #33 [Verbose] > │ ()                                                                           │
00:00:05 #34 [Verbose] > │                                                                              │
00:00:05 #35 [Verbose] > │                                                                              │
00:00:05 #36 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #37 [Verbose] >
00:00:05 #38 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 #39 [Verbose] > inl (/@) x = listm'.(/@) x
00:00:05 #40 [Verbose] > Building /tmp/!dotnet-repl/20240226-2113-4553-5362-5343153f7838/main.spi
00:00:05 #41 [Verbose] >
00:00:05 #42 [Verbose] > ╭─[ 169.81ms - stdout ]────────────────────────────────────────────────────────╮
00:00:05 #43 [Verbose] > │ ()                                                                           │
00:00:05 #44 [Verbose] > │                                                                              │
00:00:05 #45 [Verbose] > │                                                                              │
00:00:05 #46 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #47 [Verbose] >
00:00:05 #48 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 #49 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 #50 [Verbose] > │ ## TestCaseResult                                                            │
00:00:05 #51 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 #52 [Verbose] >
00:00:05 #53 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:05 #54 [Verbose] > type TestCaseResult =
00:00:05 #55 [Verbose] >     {
00:00:05 #56 [Verbose] >         Input: string
00:00:05 #57 [Verbose] >         Expected: string
00:00:05 #58 [Verbose] >         Result: string
00:00:05 #59 [Verbose] >         TimeList: int64 list
00:00:05 #60 [Verbose] >     }
00:00:05 #61 [Verbose] >
00:00:05 #62 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:05 #63 [Verbose] > #r
00:00:05 #64 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
00:00:05 #65 [Verbose] > NetCore.Html.Abstractions.dll"
00:00:05 #66 [Verbose] > #r
00:00:05 #67 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:05 #68 [Verbose] > Net.Interactive.dll"
00:00:05 #69 [Verbose] > #r
00:00:05 #70 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:05 #71 [Verbose] > Net.Interactive.FSharp.dll"
00:00:05 #72 [Verbose] > #r
00:00:05 #73 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:05 #74 [Verbose] > Net.Interactive.Formatting.dll"
00:00:05 #75 [Verbose] > open System
00:00:05 #76 [Verbose] > open System.IO
00:00:05 #77 [Verbose] > open System.Text
00:00:05 #78 [Verbose] > open Microsoft.DotNet.Interactive.Formatting
00:00:06 #79 [Verbose] >
00:00:06 #80 [Verbose] > ── fsharp - import ─────────────────────────────────────────────────────────────
00:00:06 #81 [Verbose] > #r
00:00:06 #82 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:06 #83 [Verbose] > Net.Interactive.FSharp.dll"
00:00:06 #84 [Verbose] > open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
00:00:06 #85 [Verbose] > #r
00:00:06 #86 [Verbose] > "/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
00:00:06 #87 [Verbose] > Net.Interactive.dll"
00:00:06 #88 [Verbose] > open type Microsoft.DotNet.Interactive.Kernel
00:00:07 #89 [Verbose] >
00:00:07 #90 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #91 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #92 [Verbose] > │ ## run                                                                       │
00:00:07 #93 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #94 [Verbose] >
00:00:07 #95 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:07 #96 [Verbose] > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input,
00:00:07 #97 [Verbose] > expected) =
00:00:07 #98 [Verbose] >     let inputStr =
00:00:07 #99 [Verbose] >         match box input with
00:00:07 #100 [Verbose] >         | :? System.Collections.ICollection as input ->
00:00:07 #101 [Verbose] >             System.Linq.Enumerable.Cast<obj> input
00:00:07 #102 [Verbose] >             |> Seq.map string
00:00:07 #103 [Verbose] >             |> String.concat ","
00:00:07 #104 [Verbose] >         | _ -> input.ToString ()
00:00:07 #105 [Verbose] >
00:00:07 #106 [Verbose] >     printfn ""
00:00:07 #107 [Verbose] >     printfn $"Solution: {inputStr}  "
00:00:07 #108 [Verbose] >
00:00:07 #109 [Verbose] >     let performanceInvoke (fn: unit -> 'T) =
00:00:07 #110 [Verbose] >         GC.Collect ()
00:00:07 #111 [Verbose] >         let stopwatch = System.Diagnostics.Stopwatch ()
00:00:07 #112 [Verbose] >         stopwatch.Start ()
00:00:07 #113 [Verbose] >         let time1 = stopwatch.ElapsedMilliseconds
00:00:07 #114 [Verbose] >
00:00:07 #115 [Verbose] >         let result =
00:00:07 #116 [Verbose] >             [[| 0 .. count |]]
00:00:07 #117 [Verbose] >             |> Array.Parallel.map (fun _ ->
00:00:07 #118 [Verbose] >                 fn ()
00:00:07 #119 [Verbose] >             )
00:00:07 #120 [Verbose] >             |> Array.last
00:00:07 #121 [Verbose] >
00:00:07 #122 [Verbose] >         let time2 = stopwatch.ElapsedMilliseconds - time1
00:00:07 #123 [Verbose] >
00:00:07 #124 [Verbose] >         result, time2
00:00:07 #125 [Verbose] >
00:00:07 #126 [Verbose] >     let resultsWithTime =
00:00:07 #127 [Verbose] >         solutions
00:00:07 #128 [Verbose] >         |> List.mapi (fun i (testName, solution) ->
00:00:07 #129 [Verbose] >             let result, time = performanceInvoke (fun () -> solution input)
00:00:07 #130 [Verbose] >             printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time}  "
00:00:07 #131 [Verbose] >             result, time
00:00:07 #132 [Verbose] >         )
00:00:07 #133 [Verbose] >
00:00:07 #134 [Verbose] >
00:00:07 #135 [Verbose] >     match resultsWithTime |> List.map fst with
00:00:07 #136 [Verbose] >     | ([[]] | [[ _ ]]) -> ()
00:00:07 #137 [Verbose] >     | (head :: tail) when tail |> List.forall ((=) head) -> ()
00:00:07 #138 [Verbose] >     | results -> failwithf $"Challenge error: %A{results}"
00:00:07 #139 [Verbose] >
00:00:07 #140 [Verbose] >     {
00:00:07 #141 [Verbose] >         Input = inputStr
00:00:07 #142 [Verbose] >         Expected = expected.ToString ()
00:00:07 #143 [Verbose] >         Result = resultsWithTime |> Seq.map fst |> Seq.head |> fun x ->
00:00:07 #144 [Verbose] > x.ToString ()
00:00:07 #145 [Verbose] >         TimeList = resultsWithTime |> List.map snd
00:00:07 #146 [Verbose] >     }
00:00:07 #147 [Verbose] >
00:00:07 #148 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #149 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #150 [Verbose] > │ ## runAll                                                                    │
00:00:07 #151 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #152 [Verbose] >
00:00:07 #153 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:07 #154 [Verbose] > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list)
00:00:07 #155 [Verbose] > testCases =
00:00:07 #156 [Verbose] >     printfn ""
00:00:07 #157 [Verbose] >     printfn ""
00:00:07 #158 [Verbose] >     printfn $"Test: {testName}"
00:00:07 #159 [Verbose] >     testCases
00:00:07 #160 [Verbose] >     |> Seq.map (run count solutions)
00:00:07 #161 [Verbose] >     |> Seq.toList
00:00:07 #162 [Verbose] >
00:00:07 #163 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 #164 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 #165 [Verbose] > │ ## sortResultList                                                            │
00:00:07 #166 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 #167 [Verbose] >
00:00:07 #168 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:07 #169 [Verbose] > let sortResultList resultList =
00:00:07 #170 [Verbose] >     let table =
00:00:07 #171 [Verbose] >         let rows =
00:00:07 #172 [Verbose] >             resultList
00:00:07 #173 [Verbose] >             |> List.map (fun result ->
00:00:07 #174 [Verbose] >                 let best =
00:00:07 #175 [Verbose] >                     result.TimeList
00:00:07 #176 [Verbose] >                     |> List.mapi (fun i time ->
00:00:07 #177 [Verbose] >                         i + 1, time
00:00:07 #178 [Verbose] >                     )
00:00:07 #179 [Verbose] >                     |> List.sortBy snd
00:00:07 #180 [Verbose] >                     |> List.head
00:00:07 #181 [Verbose] >                     |> fun x -> x.ToString ()
00:00:07 #182 [Verbose] >                 let row =
00:00:07 #183 [Verbose] >                     [[
00:00:07 #184 [Verbose] >                         result.Input
00:00:07 #185 [Verbose] >                         result.Expected
00:00:07 #186 [Verbose] >                         result.Result
00:00:07 #187 [Verbose] >                         best
00:00:07 #188 [Verbose] >                     ]]
00:00:07 #189 [Verbose] >                 let color =
00:00:07 #190 [Verbose] >                     match result.Expected = result.Result with
00:00:07 #191 [Verbose] >                     | true -> Some ConsoleColor.DarkGreen
00:00:07 #192 [Verbose] >                     | false -> Some ConsoleColor.DarkRed
00:00:07 #193 [Verbose] >                 row, color
00:00:07 #194 [Verbose] >             )
00:00:07 #195 [Verbose] >         let header =
00:00:07 #196 [Verbose] >             [[
00:00:07 #197 [Verbose] >                 [[
00:00:07 #198 [Verbose] >                     "Input"
00:00:07 #199 [Verbose] >                     "Expected"
00:00:07 #200 [Verbose] >                     "Result"
00:00:07 #201 [Verbose] >                     "Best"
00:00:07 #202 [Verbose] >                 ]]
00:00:07 #203 [Verbose] >                 [[
00:00:07 #204 [Verbose] >                     "---"
00:00:07 #205 [Verbose] >                     "---"
00:00:07 #206 [Verbose] >                     "---"
00:00:07 #207 [Verbose] >                     "---"
00:00:07 #208 [Verbose] >                 ]]
00:00:07 #209 [Verbose] >             ]]
00:00:07 #210 [Verbose] >             |> List.map (fun row -> row, None)
00:00:07 #211 [Verbose] >         header @ rows
00:00:07 #212 [Verbose] >
00:00:07 #213 [Verbose] >     let formattedTable =
00:00:07 #214 [Verbose] >         let lengthMap =
00:00:07 #215 [Verbose] >             table
00:00:07 #216 [Verbose] >             |> List.map fst
00:00:07 #217 [Verbose] >             |> List.transpose
00:00:07 #218 [Verbose] >             |> List.map (fun column ->
00:00:07 #219 [Verbose] >                 column
00:00:07 #220 [Verbose] >                 |> List.map String.length
00:00:07 #221 [Verbose] >                 |> List.sortDescending
00:00:07 #222 [Verbose] >                 |> List.tryHead
00:00:07 #223 [Verbose] >                 |> Option.defaultValue 0
00:00:07 #224 [Verbose] >             )
00:00:07 #225 [Verbose] >             |> List.indexed
00:00:07 #226 [Verbose] >             |> Map.ofList
00:00:07 #227 [Verbose] >         table
00:00:07 #228 [Verbose] >         |> List.map (fun (row, color) ->
00:00:07 #229 [Verbose] >             let newRow =
00:00:07 #230 [Verbose] >                 row
00:00:07 #231 [Verbose] >                 |> List.mapi (fun i cell ->
00:00:07 #232 [Verbose] >                     cell.PadRight lengthMap.[[i]]
00:00:07 #233 [Verbose] >                 )
00:00:07 #234 [Verbose] >             newRow, color
00:00:07 #235 [Verbose] >         )
00:00:07 #236 [Verbose] >
00:00:07 #237 [Verbose] >     printfn ""
00:00:07 #238 [Verbose] >     formattedTable
00:00:07 #239 [Verbose] >     |> List.iter (fun (row, color) ->
00:00:07 #240 [Verbose] >         match color with
00:00:07 #241 [Verbose] >         | Some color -> Console.ForegroundColor <- color
00:00:07 #242 [Verbose] >         | None -> Console.ResetColor ()
00:00:07 #243 [Verbose] >
00:00:07 #244 [Verbose] >         printfn "%s" (String.Join ("\t| ", row))
00:00:07 #245 [Verbose] >
00:00:07 #246 [Verbose] >         Console.ResetColor ()
00:00:07 #247 [Verbose] >     )
00:00:07 #248 [Verbose] >
00:00:07 #249 [Verbose] >     let averages =
00:00:07 #250 [Verbose] >         resultList
00:00:07 #251 [Verbose] >         |> List.map (fun result -> result.TimeList |> List.map float)
00:00:07 #252 [Verbose] >         |> List.transpose
00:00:07 #253 [Verbose] >         |> List.map List.average
00:00:07 #254 [Verbose] >         |> List.map int64
00:00:07 #255 [Verbose] >         |> List.indexed
00:00:07 #256 [Verbose] >
00:00:07 #257 [Verbose] >     printfn ""
00:00:07 #258 [Verbose] >     printfn "Average Ranking  "
00:00:07 #259 [Verbose] >     averages
00:00:07 #260 [Verbose] >     |> List.sortBy snd
00:00:07 #261 [Verbose] >     |> List.iter (fun (i, avg) ->
00:00:07 #262 [Verbose] >         printfn $"Test case %d{i + 1}. Average Time: %A{avg}  "
00:00:07 #263 [Verbose] >     )
00:00:07 #264 [Verbose] >
00:00:07 #265 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:07 #266 [Verbose] > let mutable _count =
00:00:07 #267 [Verbose] >     if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}")
00:00:07 #268 [Verbose] > <> "<null>"
00:00:07 #269 [Verbose] >     then 2000000
00:00:07 #270 [Verbose] >     else 2000
00:00:08 #271 [Verbose] >
00:00:08 #272 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 #273 [Verbose] > inl is_fast () =
00:00:08 #274 [Verbose] >     false
00:00:08 #275 [Verbose] > Building /tmp/!dotnet-repl/20240226-2113-4782-8272-87c4bd07246c/main.spi
00:00:08 #276 [Verbose] >
00:00:08 #277 [Verbose] > ╭─[ 121.30ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #278 [Verbose] > │ ()                                                                           │
00:00:08 #279 [Verbose] > │                                                                              │
00:00:08 #280 [Verbose] > │                                                                              │
00:00:08 #281 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #282 [Verbose] >
00:00:08 #283 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #284 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #285 [Verbose] > │ ## empty3Tests                                                               │
00:00:08 #286 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #287 [Verbose] >
00:00:08 #288 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #289 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #290 [Verbose] > │ Test: Empty3                                                                 │
00:00:08 #291 [Verbose] > │                                                                              │
00:00:08 #292 [Verbose] > │ Solution: (a, a)                                                             │
00:00:08 #293 [Verbose] > │ Test case 1. A. Time: 91L                                                    │
00:00:08 #294 [Verbose] > │                                                                              │
00:00:08 #295 [Verbose] > │ Solution: (a, a)                                                             │
00:00:08 #296 [Verbose] > │ Test case 1. A. Time: 56L                                                    │
00:00:08 #297 [Verbose] > │                                                                              │
00:00:08 #298 [Verbose] > │ Input  | Expected      | Result | Best                                       │
00:00:08 #299 [Verbose] > │ ---    | ---           | ---    | ---                                        │
00:00:08 #300 [Verbose] > │ (a, a) | a             | a      | (1, 91)                                    │
00:00:08 #301 [Verbose] > │ (a, a) | a             | a      | (1, 56)                                    │
00:00:08 #302 [Verbose] > │                                                                              │
00:00:08 #303 [Verbose] > │ Averages                                                                     │
00:00:08 #304 [Verbose] > │ Test case 1. Average Time: 73L                                               │
00:00:08 #305 [Verbose] > │                                                                              │
00:00:08 #306 [Verbose] > │ Ranking                                                                      │
00:00:08 #307 [Verbose] > │ Test case 1. Average Time: 73L                                               │
00:00:08 #308 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #309 [Verbose] >
00:00:08 #310 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 #311 [Verbose] > //// test
00:00:08 #312 [Verbose] >
00:00:08 #313 [Verbose] > let solutions = [[
00:00:08 #314 [Verbose] >     "A",
00:00:08 #315 [Verbose] >     fun (a, _b) ->
00:00:08 #316 [Verbose] >         a
00:00:08 #317 [Verbose] > ]]
00:00:08 #318 [Verbose] > let testCases = seq {
00:00:08 #319 [Verbose] >     ("a", "a"), "a"
00:00:08 #320 [Verbose] >     ("a", "a"), "a"
00:00:08 #321 [Verbose] > }
00:00:08 #322 [Verbose] > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases
00:00:08 #323 [Verbose] > empty3Tests
00:00:08 #324 [Verbose] > |> sortResultList
00:00:08 #325 [Verbose] >
00:00:08 #326 [Verbose] > ╭─[ 303.35ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #327 [Verbose] > │                                                                              │
00:00:08 #328 [Verbose] > │                                                                              │
00:00:08 #329 [Verbose] > │ Test: empty3Tests                                                            │
00:00:08 #330 [Verbose] > │                                                                              │
00:00:08 #331 [Verbose] > │ Solution: (a, a)                                                             │
00:00:08 #332 [Verbose] > │ Test case 1. A. Time: 33L                                                    │
00:00:08 #333 [Verbose] > │                                                                              │
00:00:08 #334 [Verbose] > │ Solution: (a, a)                                                             │
00:00:08 #335 [Verbose] > │ Test case 1. A. Time: 33L                                                    │
00:00:08 #336 [Verbose] > │                                                                              │
00:00:08 #337 [Verbose] > │ Input 	| Expected	| Result	| Best                                                  │
00:00:08 #338 [Verbose] > │ ---   	| ---     	| ---   	| ---                                                   │
00:00:08 #339 [Verbose] > │ (a, a)	| a       	| a     	| (1, 33)                                               │
00:00:08 #340 [Verbose] > │ (a, a)	| a       	| a     	| (1, 33)                                               │
00:00:08 #341 [Verbose] > │                                                                              │
00:00:08 #342 [Verbose] > │ Average Ranking                                                              │
00:00:08 #343 [Verbose] > │ Test case 1. Average Time: 33L                                               │
00:00:08 #344 [Verbose] > │                                                                              │
00:00:08 #345 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #346 [Verbose] >
00:00:08 #347 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #348 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #349 [Verbose] > │ ## empty2Tests                                                               │
00:00:08 #350 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #351 [Verbose] >
00:00:08 #352 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #353 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #354 [Verbose] > │ Test: Empty2                                                                 │
00:00:08 #355 [Verbose] > │                                                                              │
00:00:08 #356 [Verbose] > │ Solution: (a, a)                                                             │
00:00:08 #357 [Verbose] > │ Test case 1. A. Time: 59L                                                    │
00:00:08 #358 [Verbose] > │                                                                              │
00:00:08 #359 [Verbose] > │ Solution: (a, a)                                                             │
00:00:08 #360 [Verbose] > │ Test case 1. A. Time: 53L                                                    │
00:00:08 #361 [Verbose] > │                                                                              │
00:00:08 #362 [Verbose] > │ Input   | Expected        | Result  | Best                                   │
00:00:08 #363 [Verbose] > │ ---     | ---             | ---     | ---                                    │
00:00:08 #364 [Verbose] > │ (a, a)  | a               | a       | (1, 59)                                │
00:00:08 #365 [Verbose] > │ (a, a)  | a               | a       | (1, 53)                                │
00:00:08 #366 [Verbose] > │                                                                              │
00:00:08 #367 [Verbose] > │ Averages                                                                     │
00:00:08 #368 [Verbose] > │ Test case 1. Average Time: 56L                                               │
00:00:08 #369 [Verbose] > │                                                                              │
00:00:08 #370 [Verbose] > │ Ranking                                                                      │
00:00:08 #371 [Verbose] > │ Test case 1. Average Time: 56L                                               │
00:00:08 #372 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #373 [Verbose] >
00:00:08 #374 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 #375 [Verbose] > //// test
00:00:08 #376 [Verbose] >
00:00:08 #377 [Verbose] > let solutions = [[
00:00:08 #378 [Verbose] >     "A",
00:00:08 #379 [Verbose] >     fun (a, _b) ->
00:00:08 #380 [Verbose] >         a
00:00:08 #381 [Verbose] > ]]
00:00:08 #382 [Verbose] > let testCases = seq {
00:00:08 #383 [Verbose] >     ("a", "a"), "a"
00:00:08 #384 [Verbose] >     ("a", "a"), "a"
00:00:08 #385 [Verbose] > }
00:00:08 #386 [Verbose] > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases
00:00:08 #387 [Verbose] > empty2Tests
00:00:08 #388 [Verbose] > |> sortResultList
00:00:08 #389 [Verbose] >
00:00:08 #390 [Verbose] > ╭─[ 227.18ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 #391 [Verbose] > │                                                                              │
00:00:08 #392 [Verbose] > │                                                                              │
00:00:08 #393 [Verbose] > │ Test: empty2Tests                                                            │
00:00:08 #394 [Verbose] > │                                                                              │
00:00:08 #395 [Verbose] > │ Solution: (a, a)                                                             │
00:00:08 #396 [Verbose] > │ Test case 1. A. Time: 23L                                                    │
00:00:08 #397 [Verbose] > │                                                                              │
00:00:08 #398 [Verbose] > │ Solution: (a, a)                                                             │
00:00:08 #399 [Verbose] > │ Test case 1. A. Time: 21L                                                    │
00:00:08 #400 [Verbose] > │                                                                              │
00:00:08 #401 [Verbose] > │ Input 	| Expected	| Result	| Best                                                  │
00:00:08 #402 [Verbose] > │ ---   	| ---     	| ---   	| ---                                                   │
00:00:08 #403 [Verbose] > │ (a, a)	| a       	| a     	| (1, 23)                                               │
00:00:08 #404 [Verbose] > │ (a, a)	| a       	| a     	| (1, 21)                                               │
00:00:08 #405 [Verbose] > │                                                                              │
00:00:08 #406 [Verbose] > │ Average Ranking                                                              │
00:00:08 #407 [Verbose] > │ Test case 1. Average Time: 22L                                               │
00:00:08 #408 [Verbose] > │                                                                              │
00:00:08 #409 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #410 [Verbose] >
00:00:08 #411 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #412 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #413 [Verbose] > │ ## emptyTests                                                                │
00:00:08 #414 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #415 [Verbose] >
00:00:08 #416 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 #417 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 #418 [Verbose] > │ Test: Empty                                                                  │
00:00:08 #419 [Verbose] > │                                                                              │
00:00:08 #420 [Verbose] > │ Solution: 0                                                                  │
00:00:08 #421 [Verbose] > │ Test case 1. A. Time: 61L                                                    │
00:00:08 #422 [Verbose] > │                                                                              │
00:00:08 #423 [Verbose] > │ Solution: 2                                                                  │
00:00:08 #424 [Verbose] > │ Test case 1. A. Time: 62L                                                    │
00:00:08 #425 [Verbose] > │                                                                              │
00:00:08 #426 [Verbose] > │ Solution: 5                                                                  │
00:00:08 #427 [Verbose] > │ Test case 1. A. Time: 70L                                                    │
00:00:08 #428 [Verbose] > │                                                                              │
00:00:08 #429 [Verbose] > │ Input   | Expected        | Result  | Best                                   │
00:00:08 #430 [Verbose] > │ ---     | ---             | ---     | ---                                    │
00:00:08 #431 [Verbose] > │ 0       | 0               | 0       | (1, 61)                                │
00:00:08 #432 [Verbose] > │ 2       | 2               | 2       | (1, 62)                                │
00:00:08 #433 [Verbose] > │ 5       | 5               | 5       | (1, 70)                                │
00:00:08 #434 [Verbose] > │                                                                              │
00:00:08 #435 [Verbose] > │ Averages                                                                     │
00:00:08 #436 [Verbose] > │ Test case 1. Average Time: 64L                                               │
00:00:08 #437 [Verbose] > │                                                                              │
00:00:08 #438 [Verbose] > │ Ranking                                                                      │
00:00:08 #439 [Verbose] > │ Test case 1. Average Time: 64L                                               │
00:00:08 #440 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 #441 [Verbose] >
00:00:08 #442 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:08 #443 [Verbose] > //// test
00:00:08 #444 [Verbose] >
00:00:08 #445 [Verbose] > let solutions = [[
00:00:08 #446 [Verbose] >     "A",
00:00:08 #447 [Verbose] >     fun n ->
00:00:08 #448 [Verbose] >         n + 0
00:00:08 #449 [Verbose] > ]]
00:00:08 #450 [Verbose] > let testCases = seq {
00:00:08 #451 [Verbose] >     0, 0
00:00:08 #452 [Verbose] >     2, 2
00:00:08 #453 [Verbose] >     5, 5
00:00:08 #454 [Verbose] > }
00:00:08 #455 [Verbose] > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases
00:00:08 #456 [Verbose] > emptyTests
00:00:08 #457 [Verbose] > |> sortResultList
00:00:09 #458 [Verbose] >
00:00:09 #459 [Verbose] > ╭─[ 344.27ms - stdout ]────────────────────────────────────────────────────────╮
00:00:09 #460 [Verbose] > │                                                                              │
00:00:09 #461 [Verbose] > │                                                                              │
00:00:09 #462 [Verbose] > │ Test: emptyTests                                                             │
00:00:09 #463 [Verbose] > │                                                                              │
00:00:09 #464 [Verbose] > │ Solution: 0                                                                  │
00:00:09 #465 [Verbose] > │ Test case 1. A. Time: 23L                                                    │
00:00:09 #466 [Verbose] > │                                                                              │
00:00:09 #467 [Verbose] > │ Solution: 2                                                                  │
00:00:09 #468 [Verbose] > │ Test case 1. A. Time: 20L                                                    │
00:00:09 #469 [Verbose] > │                                                                              │
00:00:09 #470 [Verbose] > │ Solution: 5                                                                  │
00:00:09 #471 [Verbose] > │ Test case 1. A. Time: 27L                                                    │
00:00:09 #472 [Verbose] > │                                                                              │
00:00:09 #473 [Verbose] > │ Input	| Expected	| Result	| Best                                                   │
00:00:09 #474 [Verbose] > │ ---  	| ---     	| ---   	| ---                                                    │
00:00:09 #475 [Verbose] > │ 0    	| 0       	| 0     	| (1, 23)                                                │
00:00:09 #476 [Verbose] > │ 2    	| 2       	| 2     	| (1, 20)                                                │
00:00:09 #477 [Verbose] > │ 5    	| 5       	| 5     	| (1, 27)                                                │
00:00:09 #478 [Verbose] > │                                                                              │
00:00:09 #479 [Verbose] > │ Average Ranking                                                              │
00:00:09 #480 [Verbose] > │ Test case 1. Average Time: 23L                                               │
00:00:09 #481 [Verbose] > │                                                                              │
00:00:09 #482 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #483 [Verbose] >
00:00:09 #484 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #485 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #486 [Verbose] > │ ## uniqueLettersTests                                                        │
00:00:09 #487 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #488 [Verbose] >
00:00:09 #489 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 #490 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 #491 [Verbose] > │ Test: UniqueLetters                                                          │
00:00:09 #492 [Verbose] > │                                                                              │
00:00:09 #493 [Verbose] > │ Solution: abc                                                                │
00:00:09 #494 [Verbose] > │ Test case 1. A. Time: 1512L                                                  │
00:00:09 #495 [Verbose] > │ Test case 2. B. Time: 1947L                                                  │
00:00:09 #496 [Verbose] > │ Test case 3. C. Time: 2023L                                                  │
00:00:09 #497 [Verbose] > │ Test case 4. D. Time: 1358L                                                  │
00:00:09 #498 [Verbose] > │ Test case 5. E. Time: 1321L                                                  │
00:00:09 #499 [Verbose] > │ Test case 6. F. Time: 1346L                                                  │
00:00:09 #500 [Verbose] > │ Test case 7. G. Time: 1304L                                                  │
00:00:09 #501 [Verbose] > │ Test case 8. H. Time: 1383L                                                  │
00:00:09 #502 [Verbose] > │ Test case 9. I. Time: 1495L                                                  │
00:00:09 #503 [Verbose] > │ Test case 10. J. Time: 1245L                                                 │
00:00:09 #504 [Verbose] > │ Test case 11. K. Time: 1219L                                                 │
00:00:09 #505 [Verbose] > │                                                                              │
00:00:09 #506 [Verbose] > │ Solution: accabb                                                             │
00:00:09 #507 [Verbose] > │ Test case 1. A. Time: 1648L                                                  │
00:00:09 #508 [Verbose] > │ Test case 2. B. Time: 2061L                                                  │
00:00:09 #509 [Verbose] > │ Test case 3. C. Time: 2413L                                                  │
00:00:09 #510 [Verbose] > │ Test case 4. D. Time: 1561L                                                  │
00:00:09 #511 [Verbose] > │ Test case 5. E. Time: 1593L                                                  │
00:00:09 #512 [Verbose] > │ Test case 6. F. Time: 1518L                                                  │
00:00:09 #513 [Verbose] > │ Test case 7. G. Time: 1415L                                                  │
00:00:09 #514 [Verbose] > │ Test case 8. H. Time: 1510L                                                  │
00:00:09 #515 [Verbose] > │ Test case 9. I. Time: 1445L                                                  │
00:00:09 #516 [Verbose] > │ Test case 10. J. Time: 1636L                                                 │
00:00:09 #517 [Verbose] > │ Test case 11. K. Time: 1317L                                                 │
00:00:09 #518 [Verbose] > │                                                                              │
00:00:09 #519 [Verbose] > │ Solution: pprrqqpp                                                           │
00:00:09 #520 [Verbose] > │ Test case 1. A. Time: 2255L                                                  │
00:00:09 #521 [Verbose] > │ Test case 2. B. Time: 2408L                                                  │
00:00:09 #522 [Verbose] > │ Test case 3. C. Time: 2393L                                                  │
00:00:09 #523 [Verbose] > │ Test case 4. D. Time: 1675L                                                  │
00:00:09 #524 [Verbose] > │ Test case 5. E. Time: 1911L                                                  │
00:00:09 #525 [Verbose] > │ Test case 6. F. Time: 2126L                                                  │
00:00:09 #526 [Verbose] > │ Test case 7. G. Time: 1504L                                                  │
00:00:09 #527 [Verbose] > │ Test case 8. H. Time: 1715L                                                  │
00:00:09 #528 [Verbose] > │ Test case 9. I. Time: 1537L                                                  │
00:00:09 #529 [Verbose] > │ Test case 10. J. Time: 1522L                                                 │
00:00:09 #530 [Verbose] > │ Test case 11. K. Time: 1322L                                                 │
00:00:09 #531 [Verbose] > │                                                                              │
00:00:09 #532 [Verbose] > │ Solution:                                                                    │
00:00:09 #533 [Verbose] > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:09 #534 [Verbose] > │ bbb                                                                          │
00:00:09 #535 [Verbose] > │ Test case 1. A. Time: 13073L                                                 │
00:00:09 #536 [Verbose] > │ Test case 2. B. Time: 11519L                                                 │
00:00:09 #537 [Verbose] > │ Test case 3. C. Time: 8373L                                                  │
00:00:09 #538 [Verbose] > │ Test case 4. D. Time: 5860L                                                  │
00:00:09 #539 [Verbose] > │ Test case 5. E. Time: 6490L                                                  │
00:00:09 #540 [Verbose] > │ Test case 6. F. Time: 6325L                                                  │
00:00:09 #541 [Verbose] > │ Test case 7. G. Time: 5799L                                                  │
00:00:09 #542 [Verbose] > │ Test case 8. H. Time: 7099L                                                  │
00:00:09 #543 [Verbose] > │ Test case 9. I. Time: 6133L                                                  │
00:00:09 #544 [Verbose] > │ Test case 10. J. Time: 5993L                                                 │
00:00:09 #545 [Verbose] > │ Test case 11. K. Time: 2040L                                                 │
00:00:09 #546 [Verbose] > │                                                                              │
00:00:09 #547 [Verbose] > │ Input                                                                        │
00:00:09 #548 [Verbose] > │ | Expected        | Result  | Best                                           │
00:00:09 #549 [Verbose] > │ ---                                                                          │
00:00:09 #550 [Verbose] > │                                                                              │
00:00:09 #551 [Verbose] > │ | ---             | ---     | ---                                            │
00:00:09 #552 [Verbose] > │ abc                                                                          │
00:00:09 #553 [Verbose] > │                                                                              │
00:00:09 #554 [Verbose] > │ | abc             | abc     | (11, 1219)                                     │
00:00:09 #555 [Verbose] > │ accabb                                                                       │
00:00:09 #556 [Verbose] > │ | acb             | acb     | (11, 1317)                                     │
00:00:09 #557 [Verbose] > │ pprrqqpp                                                                     │
00:00:09 #558 [Verbose] > │ | prq             | prq     | (11, 1322)                                     │
00:00:09 #559 [Verbose] > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:09 #560 [Verbose] > │ bbb | acb             | acb     | (11, 2040)                                 │
00:00:09 #561 [Verbose] > │                                                                              │
00:00:09 #562 [Verbose] > │ Averages                                                                     │
00:00:09 #563 [Verbose] > │ Test case 1. Average Time: 4622L                                             │
00:00:09 #564 [Verbose] > │ Test case 2. Average Time: 4483L                                             │
00:00:09 #565 [Verbose] > │ Test case 3. Average Time: 3800L                                             │
00:00:09 #566 [Verbose] > │ Test case 4. Average Time: 2613L                                             │
00:00:09 #567 [Verbose] > │ Test case 5. Average Time: 2828L                                             │
00:00:09 #568 [Verbose] > │ Test case 6. Average Time: 2828L                                             │
00:00:09 #569 [Verbose] > │ Test case 7. Average Time: 2505L                                             │
00:00:09 #570 [Verbose] > │ Test case 8. Average Time: 2926L                                             │
00:00:09 #571 [Verbose] > │ Test case 9. Average Time: 2652L                                             │
00:00:09 #572 [Verbose] > │ Test case 10. Average Time: 2599L                                            │
00:00:09 #573 [Verbose] > │ Test case 11. Average Time: 1474L                                            │
00:00:09 #574 [Verbose] > │                                                                              │
00:00:09 #575 [Verbose] > │ Ranking                                                                      │
00:00:09 #576 [Verbose] > │ Test case 1. Average Time: 4622L                                             │
00:00:09 #577 [Verbose] > │ Test case 2. Average Time: 4483L                                             │
00:00:09 #578 [Verbose] > │ Test case 3. Average Time: 3800L                                             │
00:00:09 #579 [Verbose] > │ Test case 8. Average Time: 2926L                                             │
00:00:09 #580 [Verbose] > │ Test case 5. Average Time: 2828L                                             │
00:00:09 #581 [Verbose] > │ Test case 6. Average Time: 2828L                                             │
00:00:09 #582 [Verbose] > │ Test case 9. Average Time: 2652L                                             │
00:00:09 #583 [Verbose] > │ Test case 4. Average Time: 2613L                                             │
00:00:09 #584 [Verbose] > │ Test case 10. Average Time: 2599L                                            │
00:00:09 #585 [Verbose] > │ Test case 7. Average Time: 2505L                                             │
00:00:09 #586 [Verbose] > │ Test case 11. Average Time: 1474L                                            │
00:00:09 #587 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 #588 [Verbose] >
00:00:09 #589 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:09 #590 [Verbose] > //// test
00:00:09 #591 [Verbose] >
00:00:09 #592 [Verbose] > let solutions = [[
00:00:09 #593 [Verbose] >     "A",
00:00:09 #594 [Verbose] >     fun input ->
00:00:09 #595 [Verbose] >         input
00:00:09 #596 [Verbose] >         |> Seq.toList
00:00:09 #597 [Verbose] >         |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[
00:00:09 #598 [Verbose] > x ]]) [[]]
00:00:09 #599 [Verbose] >         |> Seq.toArray
00:00:09 #600 [Verbose] >         |> String
00:00:09 #601 [Verbose] >
00:00:09 #602 [Verbose] >     "B",
00:00:09 #603 [Verbose] >     fun input ->
00:00:09 #604 [Verbose] >         input
00:00:09 #605 [Verbose] >         |> Seq.rev
00:00:09 #606 [Verbose] >         |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then
00:00:09 #607 [Verbose] > acc else x :: acc) list [[]]
00:00:09 #608 [Verbose] >         |> Seq.rev
00:00:09 #609 [Verbose] >         |> Seq.toArray
00:00:09 #610 [Verbose] >         |> String
00:00:09 #611 [Verbose] >
00:00:09 #612 [Verbose] >     "C",
00:00:09 #613 [Verbose] >     fun input ->
00:00:09 #614 [Verbose] >         input
00:00:09 #615 [Verbose] >         |> Seq.rev
00:00:09 #616 [Verbose] >         |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set
00:00:09 #617 [Verbose] > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]])
00:00:09 #618 [Verbose] >         |> snd
00:00:09 #619 [Verbose] >         |> Seq.rev
00:00:09 #620 [Verbose] >         |> Seq.toArray
00:00:09 #621 [Verbose] >         |> String
00:00:09 #622 [Verbose] >
00:00:09 #623 [Verbose] >     "D",
00:00:09 #624 [Verbose] >     fun input ->
00:00:09 #625 [Verbose] >         input
00:00:09 #626 [Verbose] >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:09 #627 [Verbose] > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]])
00:00:09 #628 [Verbose] >         |> snd
00:00:09 #629 [Verbose] >         |> String
00:00:09 #630 [Verbose] >
00:00:09 #631 [Verbose] >     "E",
00:00:09 #632 [Verbose] >     fun input ->
00:00:09 #633 [Verbose] >         input
00:00:09 #634 [Verbose] >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:09 #635 [Verbose] > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:09 #636 [Verbose] >         |> snd
00:00:09 #637 [Verbose] >         |> List.rev
00:00:09 #638 [Verbose] >         |> List.toArray
00:00:09 #639 [Verbose] >         |> String
00:00:09 #640 [Verbose] >
00:00:09 #641 [Verbose] >     "F",
00:00:09 #642 [Verbose] >     fun input ->
00:00:09 #643 [Verbose] >         input
00:00:09 #644 [Verbose] >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:09 #645 [Verbose] > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]])
00:00:09 #646 [Verbose] >         |> snd
00:00:09 #647 [Verbose] >         |> List.toArray
00:00:09 #648 [Verbose] >         |> String
00:00:09 #649 [Verbose] >
00:00:09 #650 [Verbose] >     "G",
00:00:09 #651 [Verbose] >     fun input ->
00:00:09 #652 [Verbose] >         input
00:00:09 #653 [Verbose] >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:09 #654 [Verbose] > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:09 #655 [Verbose] >         |> snd
00:00:09 #656 [Verbose] >         |> List.toArray
00:00:09 #657 [Verbose] >         |> Array.rev
00:00:09 #658 [Verbose] >         |> String
00:00:09 #659 [Verbose] >
00:00:09 #660 [Verbose] >     "H",
00:00:09 #661 [Verbose] >     fun input ->
00:00:09 #662 [Verbose] >         input
00:00:09 #663 [Verbose] >         |> Seq.toList
00:00:09 #664 [Verbose] >         |> fun list ->
00:00:09 #665 [Verbose] >             let rec loop set = function
00:00:09 #666 [Verbose] >                 | head :: tail when Set.contains head set -> loop set tail
00:00:09 #667 [Verbose] >                 | head :: tail -> (loop (set.Add head) tail) @ [[ head ]]
00:00:09 #668 [Verbose] >                 | [[]] -> [[]]
00:00:09 #669 [Verbose] >             loop Set.empty list
00:00:09 #670 [Verbose] >             |> List.rev
00:00:09 #671 [Verbose] >         |> List.toArray
00:00:09 #672 [Verbose] >         |> String
00:00:09 #673 [Verbose] >
00:00:09 #674 [Verbose] >     "I",
00:00:09 #675 [Verbose] >     fun input ->
00:00:09 #676 [Verbose] >         input
00:00:09 #677 [Verbose] >         |> Seq.toList
00:00:09 #678 [Verbose] >         |> fun list ->
00:00:09 #679 [Verbose] >             let rec loop set = function
00:00:09 #680 [Verbose] >                 | head :: tail when Set.contains head set -> loop set tail
00:00:09 #681 [Verbose] >                 | head :: tail -> loop (set.Add head) tail |> Array.append [[|
00:00:09 #682 [Verbose] > head |]]
00:00:09 #683 [Verbose] >                 | [[]] -> [[||]]
00:00:09 #684 [Verbose] >             loop Set.empty list
00:00:09 #685 [Verbose] >         |> String
00:00:09 #686 [Verbose] >
00:00:09 #687 [Verbose] >     "J",
00:00:09 #688 [Verbose] >     fun input ->
00:00:09 #689 [Verbose] >         input
00:00:09 #690 [Verbose] >         |> Seq.toList
00:00:09 #691 [Verbose] >         |> fun list ->
00:00:09 #692 [Verbose] >             let rec loop set = function
00:00:09 #693 [Verbose] >                 | head :: tail when Set.contains head set -> loop set tail
00:00:09 #694 [Verbose] >                 | head :: tail -> head :: loop (set.Add head) tail
00:00:09 #695 [Verbose] >                 | [[]] -> [[]]
00:00:09 #696 [Verbose] >             loop Set.empty list
00:00:09 #697 [Verbose] >         |> List.toArray
00:00:09 #698 [Verbose] >         |> String
00:00:09 #699 [Verbose] >
00:00:09 #700 [Verbose] >     "K",
00:00:09 #701 [Verbose] >     fun input ->
00:00:09 #702 [Verbose] >         input
00:00:09 #703 [Verbose] >         |> Seq.distinct
00:00:09 #704 [Verbose] >         |> Seq.toArray
00:00:09 #705 [Verbose] >         |> String
00:00:09 #706 [Verbose] > ]]
00:00:09 #707 [Verbose] > let testCases = seq {
00:00:09 #708 [Verbose] >     "abc", "abc"
00:00:09 #709 [Verbose] >     "accabb", "acb"
00:00:09 #710 [Verbose] >     "pprrqqpp", "prq"
00:00:09 #711 [Verbose] >
00:00:09 #712 [Verbose] > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
00:00:09 #713 [Verbose] > ", "acb"
00:00:09 #714 [Verbose] > }
00:00:09 #715 [Verbose] > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions
00:00:09 #716 [Verbose] > testCases
00:00:09 #717 [Verbose] > uniqueLettersTests
00:00:09 #718 [Verbose] > |> sortResultList
00:01:15 #719 [Verbose] >
00:01:15 #720 [Verbose] > ╭─[ 1.11m - stdout ]───────────────────────────────────────────────────────────╮
00:01:15 #721 [Verbose] > │                                                                              │
00:01:15 #722 [Verbose] > │                                                                              │
00:01:15 #723 [Verbose] > │ Test: uniqueLettersTests                                                     │
00:01:15 #724 [Verbose] > │                                                                              │
00:01:15 #725 [Verbose] > │ Solution: abc                                                                │
00:01:15 #726 [Verbose] > │ Test case 1. A. Time: 1110L                                                  │
00:01:15 #727 [Verbose] > │ Test case 2. B. Time: 1657L                                                  │
00:01:15 #728 [Verbose] > │ Test case 3. C. Time: 1962L                                                  │
00:01:15 #729 [Verbose] > │ Test case 4. D. Time: 1293L                                                  │
00:01:15 #730 [Verbose] > │ Test case 5. E. Time: 1375L                                                  │
00:01:15 #731 [Verbose] > │ Test case 6. F. Time: 1013L                                                  │
00:01:15 #732 [Verbose] > │ Test case 7. G. Time: 773L                                                   │
00:01:15 #733 [Verbose] > │ Test case 8. H. Time: 882L                                                   │
00:01:15 #734 [Verbose] > │ Test case 9. I. Time: 819L                                                   │
00:01:15 #735 [Verbose] > │ Test case 10. J. Time: 742L                                                  │
00:01:15 #736 [Verbose] > │ Test case 11. K. Time: 757L                                                  │
00:01:15 #737 [Verbose] > │                                                                              │
00:01:15 #738 [Verbose] > │ Solution: accabb                                                             │
00:01:15 #739 [Verbose] > │ Test case 1. A. Time: 817L                                                   │
00:01:15 #740 [Verbose] > │ Test case 2. B. Time: 1015L                                                  │
00:01:15 #741 [Verbose] > │ Test case 3. C. Time: 1417L                                                  │
00:01:15 #742 [Verbose] > │ Test case 4. D. Time: 902L                                                   │
00:01:15 #743 [Verbose] > │ Test case 5. E. Time: 889L                                                   │
00:01:15 #744 [Verbose] > │ Test case 6. F. Time: 910L                                                   │
00:01:15 #745 [Verbose] > │ Test case 7. G. Time: 890L                                                   │
00:01:15 #746 [Verbose] > │ Test case 8. H. Time: 989L                                                   │
00:01:15 #747 [Verbose] > │ Test case 9. I. Time: 907L                                                   │
00:01:15 #748 [Verbose] > │ Test case 10. J. Time: 795L                                                  │
00:01:15 #749 [Verbose] > │ Test case 11. K. Time: 678L                                                  │
00:01:15 #750 [Verbose] > │                                                                              │
00:01:15 #751 [Verbose] > │ Solution: pprrqqpp                                                           │
00:01:15 #752 [Verbose] > │ Test case 1. A. Time: 821L                                                   │
00:01:15 #753 [Verbose] > │ Test case 2. B. Time: 1005L                                                  │
00:01:15 #754 [Verbose] > │ Test case 3. C. Time: 1376L                                                  │
00:01:15 #755 [Verbose] > │ Test case 4. D. Time: 974L                                                   │
00:01:15 #756 [Verbose] > │ Test case 5. E. Time: 965L                                                   │
00:01:15 #757 [Verbose] > │ Test case 6. F. Time: 968L                                                   │
00:01:15 #758 [Verbose] > │ Test case 7. G. Time: 903L                                                   │
00:01:15 #759 [Verbose] > │ Test case 8. H. Time: 996L                                                   │
00:01:15 #760 [Verbose] > │ Test case 9. I. Time: 924L                                                   │
00:01:15 #761 [Verbose] > │ Test case 10. J. Time: 870L                                                  │
00:01:15 #762 [Verbose] > │ Test case 11. K. Time: 692L                                                  │
00:01:15 #763 [Verbose] > │                                                                              │
00:01:15 #764 [Verbose] > │ Solution:                                                                    │
00:01:15 #765 [Verbose] > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:01:15 #766 [Verbose] > │ bbb                                                                          │
00:01:15 #767 [Verbose] > │ Test case 1. A. Time: 2265L                                                  │
00:01:15 #768 [Verbose] > │ Test case 2. B. Time: 2574L                                                  │
00:01:15 #769 [Verbose] > │ Test case 3. C. Time: 4027L                                                  │
00:01:15 #770 [Verbose] > │ Test case 4. D. Time: 2528L                                                  │
00:01:15 #771 [Verbose] > │ Test case 5. E. Time: 2495L                                                  │
00:01:15 #772 [Verbose] > │ Test case 6. F. Time: 2647L                                                  │
00:01:15 #773 [Verbose] > │ Test case 7. G. Time: 2588L                                                  │
00:01:15 #774 [Verbose] > │ Test case 8. H. Time: 2538L                                                  │
00:01:15 #775 [Verbose] > │ Test case 9. I. Time: 2482L                                                  │
00:01:15 #776 [Verbose] > │ Test case 10. J. Time: 2412L                                                 │
00:01:15 #777 [Verbose] > │ Test case 11. K. Time: 1324L                                                 │
00:01:15 #778 [Verbose] > │                                                                              │
00:01:15 #779 [Verbose] > │ Input                                                                        │
00:01:15 #780 [Verbose] > │ | Expected	| Result	| Best                                                       │
00:01:15 #781 [Verbose] > │ ---                                                                          │
00:01:15 #782 [Verbose] > │ | ---     	| ---   	| ---                                                        │
00:01:15 #783 [Verbose] > │ abc                                                                          │
00:01:15 #784 [Verbose] > │ | abc     	| abc   	| (10, 742)                                                  │
00:01:15 #785 [Verbose] > │ accabb                                                                       │
00:01:15 #786 [Verbose] > │ | acb     	| acb   	| (11, 678)                                                  │
00:01:15 #787 [Verbose] > │ pprrqqpp                                                                     │
00:01:15 #788 [Verbose] > │ | prq     	| prq   	| (11, 692)                                                  │
00:01:15 #789 [Verbose] > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:01:15 #790 [Verbose] > │ bbb	| acb     	| acb   	| (11, 1324)                                               │
00:01:15 #791 [Verbose] > │                                                                              │
00:01:15 #792 [Verbose] > │ Average Ranking                                                              │
00:01:15 #793 [Verbose] > │ Test case 11. Average Time: 862L                                             │
00:01:15 #794 [Verbose] > │ Test case 10. Average Time: 1204L                                            │
00:01:15 #795 [Verbose] > │ Test case 1. Average Time: 1253L                                             │
00:01:15 #796 [Verbose] > │ Test case 9. Average Time: 1283L                                             │
00:01:15 #797 [Verbose] > │ Test case 7. Average Time: 1288L                                             │
00:01:15 #798 [Verbose] > │ Test case 8. Average Time: 1351L                                             │
00:01:15 #799 [Verbose] > │ Test case 6. Average Time: 1384L                                             │
00:01:15 #800 [Verbose] > │ Test case 4. Average Time: 1424L                                             │
00:01:15 #801 [Verbose] > │ Test case 5. Average Time: 1431L                                             │
00:01:15 #802 [Verbose] > │ Test case 2. Average Time: 1562L                                             │
00:01:15 #803 [Verbose] > │ Test case 3. Average Time: 2195L                                             │
00:01:15 #804 [Verbose] > │                                                                              │
00:01:15 #805 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:15 #806 [Verbose] >
00:01:15 #807 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:01:15 #808 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:15 #809 [Verbose] > │ ## rotateStringsTests                                                        │
00:01:15 #810 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:15 #811 [Verbose] >
00:01:15 #812 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:01:15 #813 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:15 #814 [Verbose] > │ https://www.hackerrank.com/challenges/rotate-string/forum                    │
00:01:15 #815 [Verbose] > │                                                                              │
00:01:15 #816 [Verbose] > │ Test: RotateStrings                                                          │
00:01:15 #817 [Verbose] > │                                                                              │
00:01:15 #818 [Verbose] > │ Solution: abc                                                                │
00:01:15 #819 [Verbose] > │ Test case 1. A. Time: 1842L                                                  │
00:01:15 #820 [Verbose] > │ Test case 2. B. Time: 1846L                                                  │
00:01:15 #821 [Verbose] > │ Test case 3. C. Time: 1936L                                                  │
00:01:15 #822 [Verbose] > │ Test case 4. CA. Time: 2224L                                                 │
00:01:15 #823 [Verbose] > │ Test case 5. CB. Time: 2329L                                                 │
00:01:15 #824 [Verbose] > │ Test case 6. D. Time: 2474L                                                  │
00:01:15 #825 [Verbose] > │ Test case 7. E. Time: 1664L                                                  │
00:01:15 #826 [Verbose] > │ Test case 8. F. Time: 1517L                                                  │
00:01:15 #827 [Verbose] > │ Test case 9. FA. Time: 1651L                                                 │
00:01:15 #828 [Verbose] > │ Test case 10. FB. Time: 3764L                                                │
00:01:15 #829 [Verbose] > │ Test case 11. FC. Time: 5415L                                                │
00:01:15 #830 [Verbose] > │                                                                              │
00:01:15 #831 [Verbose] > │ Solution: abcde                                                              │
00:01:15 #832 [Verbose] > │ Test case 1. A. Time: 3356L                                                  │
00:01:15 #833 [Verbose] > │ Test case 2. B. Time: 2592L                                                  │
00:01:15 #834 [Verbose] > │ Test case 3. C. Time: 2346L                                                  │
00:01:15 #835 [Verbose] > │ Test case 4. CA. Time: 2997L                                                 │
00:01:15 #836 [Verbose] > │ Test case 5. CB. Time: 3061L                                                 │
00:01:15 #837 [Verbose] > │ Test case 6. D. Time: 4051L                                                  │
00:01:15 #838 [Verbose] > │ Test case 7. E. Time: 1905L                                                  │
00:01:15 #839 [Verbose] > │ Test case 8. F. Time: 1771L                                                  │
00:01:15 #840 [Verbose] > │ Test case 9. FA. Time: 2175L                                                 │
00:01:15 #841 [Verbose] > │ Test case 10. FB. Time: 3275L                                                │
00:01:15 #842 [Verbose] > │ Test case 11. FC. Time: 5266L                                                │
00:01:15 #843 [Verbose] > │                                                                              │
00:01:15 #844 [Verbose] > │ Solution: abcdefghi                                                          │
00:01:15 #845 [Verbose] > │ Test case 1. A. Time: 4492L                                                  │
00:01:15 #846 [Verbose] > │ Test case 2. B. Time: 3526L                                                  │
00:01:15 #847 [Verbose] > │ Test case 3. C. Time: 3583L                                                  │
00:01:15 #848 [Verbose] > │ Test case 4. CA. Time: 3711L                                                 │
00:01:15 #849 [Verbose] > │ Test case 5. CB. Time: 4783L                                                 │
00:01:15 #850 [Verbose] > │ Test case 6. D. Time: 7557L                                                  │
00:01:15 #851 [Verbose] > │ Test case 7. E. Time: 3452L                                                  │
00:01:15 #852 [Verbose] > │ Test case 8. F. Time: 3050L                                                  │
00:01:15 #853 [Verbose] > │ Test case 9. FA. Time: 3275L                                                 │
00:01:15 #854 [Verbose] > │ Test case 10. FB. Time: 4635L                                                │
00:01:15 #855 [Verbose] > │ Test case 11. FC. Time: 5616L                                                │
00:01:15 #856 [Verbose] > │                                                                              │
00:01:15 #857 [Verbose] > │ Solution: abab                                                               │
00:01:15 #858 [Verbose] > │ Test case 1. A. Time: 2093L                                                  │
00:01:15 #859 [Verbose] > │ Test case 2. B. Time: 1843L                                                  │
00:01:15 #860 [Verbose] > │ Test case 3. C. Time: 1746L                                                  │
00:01:15 #861 [Verbose] > │ Test case 4. CA. Time: 2085L                                                 │
00:01:15 #862 [Verbose] > │ Test case 5. CB. Time: 2139L                                                 │
00:01:15 #863 [Verbose] > │ Test case 6. D. Time: 2095L                                                  │
00:01:15 #864 [Verbose] > │ Test case 7. E. Time: 1723L                                                  │
00:01:15 #865 [Verbose] > │ Test case 8. F. Time: 1558L                                                  │
00:01:15 #866 [Verbose] > │ Test case 9. FA. Time: 1620L                                                 │
00:01:15 #867 [Verbose] > │ Test case 10. FB. Time: 2319L                                                │
00:01:15 #868 [Verbose] > │ Test case 11. FC. Time: 3918L                                                │
00:01:15 #869 [Verbose] > │                                                                              │
00:01:15 #870 [Verbose] > │ Solution: aa                                                                 │
00:01:15 #871 [Verbose] > │ Test case 1. A. Time: 1107L                                                  │
00:01:15 #872 [Verbose] > │ Test case 2. B. Time: 1241L                                                  │
00:01:15 #873 [Verbose] > │ Test case 3. C. Time: 1183L                                                  │
00:01:15 #874 [Verbose] > │ Test case 4. CA. Time: 1563L                                                 │
00:01:15 #875 [Verbose] > │ Test case 5. CB. Time: 1525L                                                 │
00:01:15 #876 [Verbose] > │ Test case 6. D. Time: 1591L                                                  │
00:01:15 #877 [Verbose] > │ Test case 7. E. Time: 1327L                                                  │
00:01:15 #878 [Verbose] > │ Test case 8. F. Time: 1151L                                                  │
00:01:15 #879 [Verbose] > │ Test case 9. FA. Time: 1180L                                                 │
00:01:15 #880 [Verbose] > │ Test case 10. FB. Time: 1733L                                                │
00:01:15 #881 [Verbose] > │ Test case 11. FC. Time: 2817L                                                │
00:01:15 #882 [Verbose] > │                                                                              │
00:01:15 #883 [Verbose] > │ Solution: z                                                                  │
00:01:15 #884 [Verbose] > │ Test case 1. A. Time: 816L                                                   │
00:01:15 #885 [Verbose] > │ Test case 2. B. Time: 745L                                                   │
00:01:15 #886 [Verbose] > │ Test case 3. C. Time: 928L                                                   │
00:01:15 #887 [Verbose] > │ Test case 4. CA. Time: 1375L                                                 │
00:01:15 #888 [Verbose] > │ Test case 5. CB. Time: 1029L                                                 │
00:01:15 #889 [Verbose] > │ Test case 6. D. Time: 852L                                                   │
00:01:15 #890 [Verbose] > │ Test case 7. E. Time: 712L                                                   │
00:01:15 #891 [Verbose] > │ Test case 8. F. Time: 263L                                                   │
00:01:15 #892 [Verbose] > │ Test case 9. FA. Time: 232L                                                  │
00:01:15 #893 [Verbose] > │ Test case 10. FB. Time: 773L                                                 │
00:01:15 #894 [Verbose] > │ Test case 11. FC. Time: 1789L                                                │
00:01:15 #895 [Verbose] > │                                                                              │
00:01:15 #896 [Verbose] > │ Input           | Expected                                                   │
00:01:15 #897 [Verbose] > │                                                                              │
00:01:15 #898 [Verbose] > │ | Result                                                                     │
00:01:15 #899 [Verbose] > │                                                                              │
00:01:15 #900 [Verbose] > │ | Best                                                                       │
00:01:15 #901 [Verbose] > │ ---             | ---                                                        │
00:01:15 #902 [Verbose] > │                                                                              │
00:01:15 #903 [Verbose] > │ | ---                                                                        │
00:01:15 #904 [Verbose] > │                                                                              │
00:01:15 #905 [Verbose] > │ | ---                                                                        │
00:01:15 #906 [Verbose] > │ abc             | bca cab abc                                                │
00:01:15 #907 [Verbose] > │                                                                              │
00:01:15 #908 [Verbose] > │ | bca cab abc                                                                │
00:01:15 #909 [Verbose] > │                                                                              │
00:01:15 #910 [Verbose] > │ | (8, 1517)                                                                  │
00:01:15 #911 [Verbose] > │ abcde           | bcdea cdeab deabc eabcd abcde                              │
00:01:15 #912 [Verbose] > │ | bcdea cdeab deabc eabcd abcde                                              │
00:01:15 #913 [Verbose] > │ | (8, 1771)                                                                  │
00:01:15 #914 [Verbose] > │ abcdefghi       | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde          │
00:01:15 #915 [Verbose] > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi       | bcdefghia cdefghiab          │
00:01:15 #916 [Verbose] > │ defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi        │
00:01:15 #917 [Verbose] > │ | (8, 3050)                                                                  │
00:01:15 #918 [Verbose] > │ abab            | baba abab baba abab                                        │
00:01:15 #919 [Verbose] > │                                                                              │
00:01:15 #920 [Verbose] > │ | baba abab baba abab                                                        │
00:01:15 #921 [Verbose] > │                                                                              │
00:01:15 #922 [Verbose] > │ | (8, 1558)                                                                  │
00:01:15 #923 [Verbose] > │ aa              | aa aa                                                      │
00:01:15 #924 [Verbose] > │                                                                              │
00:01:15 #925 [Verbose] > │ | aa aa                                                                      │
00:01:15 #926 [Verbose] > │                                                                              │
00:01:15 #927 [Verbose] > │ | (1, 1107)                                                                  │
00:01:15 #928 [Verbose] > │ z               | z                                                          │
00:01:15 #929 [Verbose] > │                                                                              │
00:01:15 #930 [Verbose] > │ | z                                                                          │
00:01:15 #931 [Verbose] > │                                                                              │
00:01:15 #932 [Verbose] > │ | (9, 232)                                                                   │
00:01:15 #933 [Verbose] > │                                                                              │
00:01:15 #934 [Verbose] > │ Averages                                                                     │
00:01:15 #935 [Verbose] > │ Test case 1. Average Time: 2284L                                             │
00:01:15 #936 [Verbose] > │ Test case 2. Average Time: 1965L                                             │
00:01:15 #937 [Verbose] > │ Test case 3. Average Time: 1953L                                             │
00:01:15 #938 [Verbose] > │ Test case 4. Average Time: 2325L                                             │
00:01:15 #939 [Verbose] > │ Test case 5. Average Time: 2477L                                             │
00:01:15 #940 [Verbose] > │ Test case 6. Average Time: 3103L                                             │
00:01:15 #941 [Verbose] > │ Test case 7. Average Time: 1797L                                             │
00:01:15 #942 [Verbose] > │ Test case 8. Average Time: 1551L                                             │
00:01:15 #943 [Verbose] > │ Test case 9. Average Time: 1688L                                             │
00:01:15 #944 [Verbose] > │ Test case 10. Average Time: 2749L                                            │
00:01:15 #945 [Verbose] > │ Test case 11. Average Time: 4136L                                            │
00:01:15 #946 [Verbose] > │                                                                              │
00:01:15 #947 [Verbose] > │ Ranking                                                                      │
00:01:15 #948 [Verbose] > │ Test case 11. Average Time: 4136L                                            │
00:01:15 #949 [Verbose] > │ Test case 6. Average Time: 3103L                                             │
00:01:15 #950 [Verbose] > │ Test case 10. Average Time: 2749L                                            │
00:01:15 #951 [Verbose] > │ Test case 5. Average Time: 2477L                                             │
00:01:15 #952 [Verbose] > │ Test case 4. Average Time: 2325L                                             │
00:01:15 #953 [Verbose] > │ Test case 1. Average Time: 2284L                                             │
00:01:15 #954 [Verbose] > │ Test case 2. Average Time: 1965L                                             │
00:01:15 #955 [Verbose] > │ Test case 3. Average Time: 1953L                                             │
00:01:15 #956 [Verbose] > │ Test case 7. Average Time: 1797L                                             │
00:01:15 #957 [Verbose] > │ Test case 9. Average Time: 1688L                                             │
00:01:15 #958 [Verbose] > │ Test case 8. Average Time: 1551L                                             │
00:01:15 #959 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:15 #960 [Verbose] >
00:01:15 #961 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:15 #962 [Verbose] > //// test
00:01:15 #963 [Verbose] >
00:01:15 #964 [Verbose] > let solutions = [[
00:01:15 #965 [Verbose] >     "A",
00:01:15 #966 [Verbose] >     fun (input: string) ->
00:01:15 #967 [Verbose] >         let resultList =
00:01:15 #968 [Verbose] >             List.fold (fun acc x ->
00:01:15 #969 [Verbose] >                 let rotate (text: string) (letter: string) = text.Substring (1,
00:01:15 #970 [Verbose] > input.Length - 1) + letter
00:01:15 #971 [Verbose] >                 [[ rotate (if acc.IsEmpty then input else acc.Head) (string x)
00:01:15 #972 [Verbose] > ]] @ acc
00:01:15 #973 [Verbose] >             ) [[]] (Seq.toList input)
00:01:15 #974 [Verbose] >
00:01:15 #975 [Verbose] >         List.foldBack (fun acc x -> x + acc + " ") resultList ""
00:01:15 #976 [Verbose] >         |> fun x -> x.TrimEnd ()
00:01:15 #977 [Verbose] >
00:01:15 #978 [Verbose] >     "B",
00:01:15 #979 [Verbose] >     fun input ->
00:01:15 #980 [Verbose] >         input
00:01:15 #981 [Verbose] >         |> Seq.toList
00:01:15 #982 [Verbose] >         |> List.fold (fun (acc: string list) letter ->
00:01:16 #983 [Verbose] >             let last =
00:01:16 #984 [Verbose] >                 if acc.IsEmpty
00:01:16 #985 [Verbose] >                 then input
00:01:16 #986 [Verbose] >                 else acc.Head
00:01:16 #987 [Verbose] >
00:01:16 #988 [Verbose] >             let item = last.[[1 .. input.Length - 1]] + string letter
00:01:16 #989 [Verbose] >
00:01:16 #990 [Verbose] >             item :: acc
00:01:16 #991 [Verbose] >         ) [[]]
00:01:16 #992 [Verbose] >         |> List.rev
00:01:16 #993 [Verbose] >         |> String.concat " "
00:01:16 #994 [Verbose] >
00:01:16 #995 [Verbose] >     "C",
00:01:16 #996 [Verbose] >     fun input ->
00:01:16 #997 [Verbose] >         input
00:01:16 #998 [Verbose] >         |> Seq.toList
00:01:16 #999 [Verbose] >         |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:01:16 #1000 [Verbose] > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:01:16 #1001 [Verbose] >         |> List.rev
00:01:16 #1002 [Verbose] >         |> List.skip 1
00:01:16 #1003 [Verbose] >         |> String.concat " "
00:01:16 #1004 [Verbose] >
00:01:16 #1005 [Verbose] >     "CA",
00:01:16 #1006 [Verbose] >     fun input ->
00:01:16 #1007 [Verbose] >         input
00:01:16 #1008 [Verbose] >         |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:01:16 #1009 [Verbose] > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:01:16 #1010 [Verbose] >         |> Seq.rev
00:01:16 #1011 [Verbose] >         |> Seq.skip 1
00:01:16 #1012 [Verbose] >         |> String.concat " "
00:01:16 #1013 [Verbose] >
00:01:16 #1014 [Verbose] >     "CB",
00:01:16 #1015 [Verbose] >     fun input ->
00:01:16 #1016 [Verbose] >         input
00:01:16 #1017 [Verbose] >         |> Seq.toArray
00:01:16 #1018 [Verbose] >         |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[|
00:01:16 #1019 [Verbose] > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]]
00:01:16 #1020 [Verbose] >         |> Array.rev
00:01:16 #1021 [Verbose] >         |> Array.skip 1
00:01:16 #1022 [Verbose] >         |> String.concat " "
00:01:16 #1023 [Verbose] >
00:01:16 #1024 [Verbose] >     "D",
00:01:16 #1025 [Verbose] >     fun input ->
00:01:16 #1026 [Verbose] >         input
00:01:16 #1027 [Verbose] >         |> Seq.toList
00:01:16 #1028 [Verbose] >         |> fun list ->
00:01:16 #1029 [Verbose] >             let rec loop (acc: char list list) = function
00:01:16 #1030 [Verbose] >                 | _ when acc.Length = list.Length -> acc
00:01:16 #1031 [Verbose] >                 | head :: tail ->
00:01:16 #1032 [Verbose] >                     let item = tail @ [[ head ]]
00:01:16 #1033 [Verbose] >                     loop (item :: acc) item
00:01:16 #1034 [Verbose] >                 | [[]] -> [[]]
00:01:16 #1035 [Verbose] >             loop [[]] list
00:01:16 #1036 [Verbose] >         |> List.rev
00:01:16 #1037 [Verbose] >         |> List.map (List.toArray >> String)
00:01:16 #1038 [Verbose] >         |> String.concat " "
00:01:16 #1039 [Verbose] >
00:01:16 #1040 [Verbose] >     "E",
00:01:16 #1041 [Verbose] >     fun input ->
00:01:16 #1042 [Verbose] >         input
00:01:16 #1043 [Verbose] >         |> Seq.toList
00:01:16 #1044 [Verbose] >         |> fun list ->
00:01:16 #1045 [Verbose] >             let rec loop (last: string) = function
00:01:16 #1046 [Verbose] >                 | head :: tail ->
00:01:16 #1047 [Verbose] >                     let item = last.[[1 .. input.Length - 1]] + string head
00:01:16 #1048 [Verbose] >                     item :: loop item tail
00:01:16 #1049 [Verbose] >                 | [[]] -> [[]]
00:01:16 #1050 [Verbose] >             loop input list
00:01:16 #1051 [Verbose] >         |> String.concat " "
00:01:16 #1052 [Verbose] >
00:01:16 #1053 [Verbose] >     "F",
00:01:16 #1054 [Verbose] >     fun input ->
00:01:16 #1055 [Verbose] >         Array.singleton 0
00:01:16 #1056 [Verbose] >         |> Array.append [[| 1 .. input.Length - 1 |]]
00:01:16 #1057 [Verbose] >         |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:16 #1058 [Verbose] >         |> String.concat " "
00:01:16 #1059 [Verbose] >
00:01:16 #1060 [Verbose] >     "FA",
00:01:16 #1061 [Verbose] >     fun input ->
00:01:16 #1062 [Verbose] >         List.singleton 0
00:01:16 #1063 [Verbose] >         |> List.append [[ 1 .. input.Length - 1 ]]
00:01:16 #1064 [Verbose] >         |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:16 #1065 [Verbose] >         |> String.concat " "
00:01:16 #1066 [Verbose] >
00:01:16 #1067 [Verbose] >     "FB",
00:01:16 #1068 [Verbose] >     fun input ->
00:01:16 #1069 [Verbose] >         Seq.singleton 0
00:01:16 #1070 [Verbose] >         |> Seq.append (seq { 1 .. input.Length - 1 })
00:01:16 #1071 [Verbose] >         |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:16 #1072 [Verbose] >         |> String.concat " "
00:01:16 #1073 [Verbose] >
00:01:16 #1074 [Verbose] >     "FC",
00:01:16 #1075 [Verbose] >     fun input ->
00:01:16 #1076 [Verbose] >         Array.singleton 0
00:01:16 #1077 [Verbose] >         |> Array.append [[| 1 .. input.Length - 1 |]]
00:01:16 #1078 [Verbose] >         |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:16 #1079 [Verbose] >         |> String.concat " "
00:01:16 #1080 [Verbose] > ]]
00:01:16 #1081 [Verbose] > let testCases = seq {
00:01:16 #1082 [Verbose] >     "abc", "bca cab abc"
00:01:16 #1083 [Verbose] >     "abcde", "bcdea cdeab deabc eabcd abcde"
00:01:16 #1084 [Verbose] >     "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef
00:01:16 #1085 [Verbose] > hiabcdefg iabcdefgh abcdefghi"
00:01:16 #1086 [Verbose] >     "abab", "baba abab baba abab"
00:01:16 #1087 [Verbose] >     "aa", "aa aa"
00:01:16 #1088 [Verbose] >     "z", "z"
00:01:16 #1089 [Verbose] > }
00:01:16 #1090 [Verbose] > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions
00:01:16 #1091 [Verbose] > testCases
00:01:16 #1092 [Verbose] > rotateStringsTests
00:01:16 #1093 [Verbose] > |> sortResultList
00:02:57 #1094 [Verbose] >
00:02:57 #1095 [Verbose] > ╭─[ 1.68m - stdout ]───────────────────────────────────────────────────────────╮
00:02:57 #1096 [Verbose] > │                                                                              │
00:02:57 #1097 [Verbose] > │                                                                              │
00:02:57 #1098 [Verbose] > │ Test: rotateStringsTests                                                     │
00:02:57 #1099 [Verbose] > │                                                                              │
00:02:57 #1100 [Verbose] > │ Solution: abc                                                                │
00:02:57 #1101 [Verbose] > │ Test case 1. A. Time: 1041L                                                  │
00:02:57 #1102 [Verbose] > │ Test case 2. B. Time: 1051L                                                  │
00:02:57 #1103 [Verbose] > │ Test case 3. C. Time: 1117L                                                  │
00:02:57 #1104 [Verbose] > │ Test case 4. CA. Time: 1518L                                                 │
00:02:57 #1105 [Verbose] > │ Test case 5. CB. Time: 1272L                                                 │
00:02:57 #1106 [Verbose] > │ Test case 6. D. Time: 1266L                                                  │
00:02:57 #1107 [Verbose] > │ Test case 7. E. Time: 983L                                                   │
00:02:57 #1108 [Verbose] > │ Test case 8. F. Time: 951L                                                   │
00:02:57 #1109 [Verbose] > │ Test case 9. FA. Time: 1066L                                                 │
00:02:57 #1110 [Verbose] > │ Test case 10. FB. Time: 1861L                                                │
00:02:57 #1111 [Verbose] > │ Test case 11. FC. Time: 2560L                                                │
00:02:57 #1112 [Verbose] > │                                                                              │
00:02:57 #1113 [Verbose] > │ Solution: abcde                                                              │
00:02:57 #1114 [Verbose] > │ Test case 1. A. Time: 1661L                                                  │
00:02:57 #1115 [Verbose] > │ Test case 2. B. Time: 1530L                                                  │
00:02:57 #1116 [Verbose] > │ Test case 3. C. Time: 1365L                                                  │
00:02:57 #1117 [Verbose] > │ Test case 4. CA. Time: 1480L                                                 │
00:02:57 #1118 [Verbose] > │ Test case 5. CB. Time: 1523L                                                 │
00:02:57 #1119 [Verbose] > │ Test case 6. D. Time: 2036L                                                  │
00:02:57 #1120 [Verbose] > │ Test case 7. E. Time: 1209L                                                  │
00:02:57 #1121 [Verbose] > │ Test case 8. F. Time: 1123L                                                  │
00:02:57 #1122 [Verbose] > │ Test case 9. FA. Time: 1480L                                                 │
00:02:57 #1123 [Verbose] > │ Test case 10. FB. Time: 2007L                                                │
00:02:57 #1124 [Verbose] > │ Test case 11. FC. Time: 2544L                                                │
00:02:57 #1125 [Verbose] > │                                                                              │
00:02:57 #1126 [Verbose] > │ Solution: abcdefghi                                                          │
00:02:57 #1127 [Verbose] > │ Test case 1. A. Time: 2641L                                                  │
00:02:57 #1128 [Verbose] > │ Test case 2. B. Time: 2235L                                                  │
00:02:57 #1129 [Verbose] > │ Test case 3. C. Time: 2232L                                                  │
00:02:57 #1130 [Verbose] > │ Test case 4. CA. Time: 2223L                                                 │
00:02:57 #1131 [Verbose] > │ Test case 5. CB. Time: 2569L                                                 │
00:02:57 #1132 [Verbose] > │ Test case 6. D. Time: 3763L                                                  │
00:02:57 #1133 [Verbose] > │ Test case 7. E. Time: 2100L                                                  │
00:02:57 #1134 [Verbose] > │ Test case 8. F. Time: 1731L                                                  │
00:02:57 #1135 [Verbose] > │ Test case 9. FA. Time: 2212L                                                 │
00:02:57 #1136 [Verbose] > │ Test case 10. FB. Time: 2825L                                                │
00:02:57 #1137 [Verbose] > │ Test case 11. FC. Time: 3238L                                                │
00:02:57 #1138 [Verbose] > │                                                                              │
00:02:57 #1139 [Verbose] > │ Solution: abab                                                               │
00:02:57 #1140 [Verbose] > │ Test case 1. A. Time: 1248L                                                  │
00:02:57 #1141 [Verbose] > │ Test case 2. B. Time: 1153L                                                  │
00:02:57 #1142 [Verbose] > │ Test case 3. C. Time: 1282L                                                  │
00:02:57 #1143 [Verbose] > │ Test case 4. CA. Time: 1312L                                                 │
00:02:57 #1144 [Verbose] > │ Test case 5. CB. Time: 1300L                                                 │
00:02:57 #1145 [Verbose] > │ Test case 6. D. Time: 1569L                                                  │
00:02:57 #1146 [Verbose] > │ Test case 7. E. Time: 1100L                                                  │
00:02:57 #1147 [Verbose] > │ Test case 8. F. Time: 933L                                                   │
00:02:57 #1148 [Verbose] > │ Test case 9. FA. Time: 1127L                                                 │
00:02:57 #1149 [Verbose] > │ Test case 10. FB. Time: 1757L                                                │
00:02:57 #1150 [Verbose] > │ Test case 11. FC. Time: 2319L                                                │
00:02:57 #1151 [Verbose] > │                                                                              │
00:02:57 #1152 [Verbose] > │ Solution: aa                                                                 │
00:02:57 #1153 [Verbose] > │ Test case 1. A. Time: 760L                                                   │
00:02:57 #1154 [Verbose] > │ Test case 2. B. Time: 848L                                                   │
00:02:57 #1155 [Verbose] > │ Test case 3. C. Time: 844L                                                   │
00:02:57 #1156 [Verbose] > │ Test case 4. CA. Time: 986L                                                  │
00:02:57 #1157 [Verbose] > │ Test case 5. CB. Time: 919L                                                  │
00:02:57 #1158 [Verbose] > │ Test case 6. D. Time: 864L                                                   │
00:02:57 #1159 [Verbose] > │ Test case 7. E. Time: 702L                                                   │
00:02:57 #1160 [Verbose] > │ Test case 8. F. Time: 606L                                                   │
00:02:57 #1161 [Verbose] > │ Test case 9. FA. Time: 772L                                                  │
00:02:57 #1162 [Verbose] > │ Test case 10. FB. Time: 1275L                                                │
00:02:57 #1163 [Verbose] > │ Test case 11. FC. Time: 1890L                                                │
00:02:57 #1164 [Verbose] > │                                                                              │
00:02:57 #1165 [Verbose] > │ Solution: z                                                                  │
00:02:57 #1166 [Verbose] > │ Test case 1. A. Time: 399L                                                   │
00:02:57 #1167 [Verbose] > │ Test case 2. B. Time: 394L                                                   │
00:02:57 #1168 [Verbose] > │ Test case 3. C. Time: 556L                                                   │
00:02:57 #1169 [Verbose] > │ Test case 4. CA. Time: 856L                                                  │
00:02:57 #1170 [Verbose] > │ Test case 5. CB. Time: 593L                                                  │
00:02:57 #1171 [Verbose] > │ Test case 6. D. Time: 491L                                                   │
00:02:57 #1172 [Verbose] > │ Test case 7. E. Time: 384L                                                   │
00:02:57 #1173 [Verbose] > │ Test case 8. F. Time: 124L                                                   │
00:02:57 #1174 [Verbose] > │ Test case 9. FA. Time: 112L                                                  │
00:02:57 #1175 [Verbose] > │ Test case 10. FB. Time: 365L                                                 │
00:02:57 #1176 [Verbose] > │ Test case 11. FC. Time: 768L                                                 │
00:02:57 #1177 [Verbose] > │                                                                              │
00:02:57 #1178 [Verbose] > │ Input    	| Expected                                                           │
00:02:57 #1179 [Verbose] > │                                                                              │
00:02:57 #1180 [Verbose] > │ | Result                                                                     │
00:02:57 #1181 [Verbose] > │                                                                              │
00:02:57 #1182 [Verbose] > │ | Best                                                                       │
00:02:57 #1183 [Verbose] > │ ---      	| ---                                                                │
00:02:57 #1184 [Verbose] > │                                                                              │
00:02:57 #1185 [Verbose] > │ | ---                                                                        │
00:02:57 #1186 [Verbose] > │                                                                              │
00:02:57 #1187 [Verbose] > │ | ---                                                                        │
00:02:57 #1188 [Verbose] > │ abc      	| bca cab abc                                                        │
00:02:57 #1189 [Verbose] > │                                                                              │
00:02:57 #1190 [Verbose] > │ | bca cab abc                                                                │
00:02:57 #1191 [Verbose] > │                                                                              │
00:02:57 #1192 [Verbose] > │ | (8, 951)                                                                   │
00:02:57 #1193 [Verbose] > │ abcde    	| bcdea cdeab deabc eabcd abcde                                      │
00:02:57 #1194 [Verbose] > │ | bcdea cdeab deabc eabcd abcde                                              │
00:02:57 #1195 [Verbose] > │ | (8, 1123)                                                                  │
00:02:57 #1196 [Verbose] > │ abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef        │
00:02:57 #1197 [Verbose] > │ hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd        │
00:02:57 #1198 [Verbose] > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| (8, 1731)                  │
00:02:57 #1199 [Verbose] > │ abab     	| baba abab baba abab                                                │
00:02:57 #1200 [Verbose] > │ | baba abab baba abab                                                        │
00:02:57 #1201 [Verbose] > │ | (8, 933)                                                                   │
00:02:57 #1202 [Verbose] > │ aa       	| aa aa                                                              │
00:02:57 #1203 [Verbose] > │                                                                              │
00:02:57 #1204 [Verbose] > │ | aa aa                                                                      │
00:02:57 #1205 [Verbose] > │                                                                              │
00:02:57 #1206 [Verbose] > │ | (8, 606)                                                                   │
00:02:57 #1207 [Verbose] > │ z        	| z                                                                  │
00:02:57 #1208 [Verbose] > │                                                                              │
00:02:57 #1209 [Verbose] > │ | z                                                                          │
00:02:57 #1210 [Verbose] > │                                                                              │
00:02:57 #1211 [Verbose] > │ | (9, 112)                                                                   │
00:02:57 #1212 [Verbose] > │                                                                              │
00:02:57 #1213 [Verbose] > │ Average Ranking                                                              │
00:02:57 #1214 [Verbose] > │ Test case 8. Average Time: 911L                                              │
00:02:57 #1215 [Verbose] > │ Test case 7. Average Time: 1079L                                             │
00:02:57 #1216 [Verbose] > │ Test case 9. Average Time: 1128L                                             │
00:02:57 #1217 [Verbose] > │ Test case 2. Average Time: 1201L                                             │
00:02:57 #1218 [Verbose] > │ Test case 3. Average Time: 1232L                                             │
00:02:57 #1219 [Verbose] > │ Test case 1. Average Time: 1291L                                             │
00:02:57 #1220 [Verbose] > │ Test case 5. Average Time: 1362L                                             │
00:02:57 #1221 [Verbose] > │ Test case 4. Average Time: 1395L                                             │
00:02:57 #1222 [Verbose] > │ Test case 6. Average Time: 1664L                                             │
00:02:57 #1223 [Verbose] > │ Test case 10. Average Time: 1681L                                            │
00:02:57 #1224 [Verbose] > │ Test case 11. Average Time: 2219L                                            │
00:02:57 #1225 [Verbose] > │                                                                              │
00:02:57 #1226 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:57 #1227 [Verbose] >
00:02:57 #1228 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:02:57 #1229 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:57 #1230 [Verbose] > │ ## rotate_strings_tests                                                      │
00:02:57 #1231 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:57 #1232 [Verbose] >
00:02:57 #1233 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:57 #1234 [Verbose] > // // test
00:02:57 #1235 [Verbose] > // // timeout=60000
00:02:57 #1236 [Verbose] > // // print_code=true
00:02:57 #1237 [Verbose] >
00:02:57 #1238 [Verbose] > inl get_solutions () =
00:02:57 #1239 [Verbose] >     [[
00:02:57 #1240 [Verbose] >         // "A",
00:02:57 #1241 [Verbose] >         // fun (input : string) =>
00:02:57 #1242 [Verbose] >         //     let resultList =
00:02:57 #1243 [Verbose] >         //         List.fold (fun acc x =>
00:02:57 #1244 [Verbose] >         //             let rotate (text : string) (letter : string) =
00:02:57 #1245 [Verbose] > text.Substring (1, input.Length - 1) + letter
00:02:57 #1246 [Verbose] >         //             [[ rotate (if acc.IsEmpty then input else acc.Head)
00:02:57 #1247 [Verbose] > (string x) ]] /@ acc
00:02:57 #1248 [Verbose] >         //         ) [[]] (Seq.toList input)
00:02:57 #1249 [Verbose] >
00:02:57 #1250 [Verbose] >         //     List.foldBack (fun acc x => x + acc + " ") resultList ""
00:02:57 #1251 [Verbose] >         //     |> fun x => x.TrimEnd ()
00:02:57 #1252 [Verbose] >
00:02:57 #1253 [Verbose] >         // "B",
00:02:57 #1254 [Verbose] >         // fun input =>
00:02:57 #1255 [Verbose] >         //     input
00:02:57 #1256 [Verbose] >         //     |> Seq.toList
00:02:57 #1257 [Verbose] >         //     |> List.fold (fun (acc : string list) letter =>
00:02:57 #1258 [Verbose] >         //         let last =
00:02:57 #1259 [Verbose] >         //             if acc.IsEmpty
00:02:57 #1260 [Verbose] >         //             then input
00:02:57 #1261 [Verbose] >         //             else acc.Head
00:02:57 #1262 [Verbose] >
00:02:57 #1263 [Verbose] >         //         let item = last.[[1 .. input.Length - 1]] + string letter
00:02:57 #1264 [Verbose] >
00:02:57 #1265 [Verbose] >         //         item :: acc
00:02:57 #1266 [Verbose] >         //     ) [[]]
00:02:57 #1267 [Verbose] >         //     |> List.rev
00:02:57 #1268 [Verbose] >         //     |> String.concat " "
00:02:57 #1269 [Verbose] >
00:02:57 #1270 [Verbose] >         // "C",
00:02:57 #1271 [Verbose] >         // fun input =>
00:02:57 #1272 [Verbose] >         //     input
00:02:57 #1273 [Verbose] >         //     |> Seq.toList
00:02:57 #1274 [Verbose] >         //     |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:02:57 #1275 [Verbose] > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:02:57 #1276 [Verbose] >         //     |> List.rev
00:02:57 #1277 [Verbose] >         //     |> List.skip 1
00:02:57 #1278 [Verbose] >         //     |> String.concat " "
00:02:57 #1279 [Verbose] >
00:02:57 #1280 [Verbose] >         // "CA",
00:02:57 #1281 [Verbose] >         // fun input =>
00:02:57 #1282 [Verbose] >         //     input
00:02:57 #1283 [Verbose] >         //     |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:02:57 #1284 [Verbose] > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:02:57 #1285 [Verbose] >         //     |> Seq.rev
00:02:57 #1286 [Verbose] >         //     |> Seq.skip 1
00:02:57 #1287 [Verbose] >         //     |> String.concat " "
00:02:57 #1288 [Verbose] >
00:02:57 #1289 [Verbose] >         // "CB",
00:02:57 #1290 [Verbose] >         // fun input =>
00:02:57 #1291 [Verbose] >         //     input
00:02:57 #1292 [Verbose] >         //     |> Seq.toArray
00:02:57 #1293 [Verbose] >         //     |> Array.fold (fun (acc : a _ string) letter => acc |>
00:02:57 #1294 [Verbose] > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]]))
00:02:57 #1295 [Verbose] > (a ;[[ input ]])
00:02:57 #1296 [Verbose] >         //     |> Array.rev
00:02:57 #1297 [Verbose] >         //     |> Array.skip 1
00:02:57 #1298 [Verbose] >         //     |> String.concat " "
00:02:57 #1299 [Verbose] >
00:02:57 #1300 [Verbose] >         // "D",
00:02:57 #1301 [Verbose] >         // fun input =>
00:02:57 #1302 [Verbose] >         //     input
00:02:57 #1303 [Verbose] >         //     |> Seq.toList
00:02:57 #1304 [Verbose] >         //     |> fun list =>
00:02:57 #1305 [Verbose] >         //         let rec loop (acc : list (list char)) = function
00:02:57 #1306 [Verbose] >         //             | _ when acc.Length = list.Length => acc
00:02:57 #1307 [Verbose] >         //             | head :: tail =>
00:02:57 #1308 [Verbose] >         //                 let item = tail /@ [[ head ]]
00:02:57 #1309 [Verbose] >         //                 loop (item :: acc) item
00:02:57 #1310 [Verbose] >         //             | [[]] => [[]]
00:02:57 #1311 [Verbose] >         //         loop [[]] list
00:02:57 #1312 [Verbose] >         //     |> List.rev
00:02:57 #1313 [Verbose] >         //     |> List.map (List.toArray >> String)
00:02:57 #1314 [Verbose] >         //     |> String.concat " "
00:02:57 #1315 [Verbose] >
00:02:57 #1316 [Verbose] >         // "E",
00:02:57 #1317 [Verbose] >         // fun input =>
00:02:57 #1318 [Verbose] >         //     input
00:02:57 #1319 [Verbose] >         //     |> Seq.toList
00:02:57 #1320 [Verbose] >         //     |> fun list =>
00:02:57 #1321 [Verbose] >         //         let rec loop (last : string) = function
00:02:57 #1322 [Verbose] >         //             | head :: tail =>
00:02:57 #1323 [Verbose] >         //                 let item = last.[[1 .. input.Length - 1]] + string
00:02:57 #1324 [Verbose] > head
00:02:57 #1325 [Verbose] >         //                 item :: loop item tail
00:02:57 #1326 [Verbose] >         //             | [[]] => [[]]
00:02:57 #1327 [Verbose] >         //         loop input list
00:02:57 #1328 [Verbose] >         //     |> String.concat " "
00:02:57 #1329 [Verbose] >
00:02:57 #1330 [Verbose] >         "F",
00:02:57 #1331 [Verbose] >         fun input =>
00:02:57 #1332 [Verbose] >         // Array.singleton 0
00:02:57 #1333 [Verbose] >         // |> Array.append [[| 1 .. input.Length - 1 |]]
00:02:57 #1334 [Verbose] >         // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:57 #1335 [Verbose] >         // |> String.concat " "
00:02:57 #1336 [Verbose] >             inl input_length = input |> sm.length
00:02:57 #1337 [Verbose] >             am.singleton 0i32
00:02:57 #1338 [Verbose] >             |> am.append (am'.init_series 1 (input_length - 1) 1)
00:02:57 #1339 [Verbose] >             |> am.map (fun i =>
00:02:57 #1340 [Verbose] >                 inl a = sm.slice input { from = i; to = input_length - 1 } :
00:02:57 #1341 [Verbose] > string
00:02:57 #1342 [Verbose] >                 inl b = sm.slice input { from = 0; to = i - 1 } : string
00:02:57 #1343 [Verbose] >                 $"!a + !b" : string
00:02:57 #1344 [Verbose] >             )
00:02:57 #1345 [Verbose] >             |> sm'.concat " "
00:02:57 #1346 [Verbose] >
00:02:57 #1347 [Verbose] >         "FA",
00:02:57 #1348 [Verbose] >         fun input =>
00:02:57 #1349 [Verbose] >         //     List.singleton 0
00:02:57 #1350 [Verbose] >         //     |> List.append [[ 1 .. input.Length - 1 ]]
00:02:57 #1351 [Verbose] >         //   //  |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:57 #1352 [Verbose] >         //     |> String.concat " "
00:02:57 #1353 [Verbose] >             inl input_length = input |> sm.length
00:02:57 #1354 [Verbose] >             listm.singleton 0i32
00:02:57 #1355 [Verbose] >             |> listm.append (listm'.init_series 1 (input_length - 1) 1)
00:02:57 #1356 [Verbose] >             |> listm.map (fun i =>
00:02:57 #1357 [Verbose] >                 inl a = sm.slice input { from = i; to = input_length - 1 } :
00:02:57 #1358 [Verbose] > string
00:02:57 #1359 [Verbose] >                 inl b = if i = 0 then "" else sm.slice input { from = 0; to = i
00:02:57 #1360 [Verbose] > - 1 } : string
00:02:57 #1361 [Verbose] >                 $"!a + !b" : string
00:02:57 #1362 [Verbose] >             )
00:02:57 #1363 [Verbose] >             |> listm.toArray
00:02:57 #1364 [Verbose] >             |> fun x => x : a i32 _
00:02:57 #1365 [Verbose] >             |> sm'.concat " "
00:02:57 #1366 [Verbose] >
00:02:57 #1367 [Verbose] >         // "FB",
00:02:57 #1368 [Verbose] >         // fun input =>
00:02:57 #1369 [Verbose] >         //     Seq.singleton 0
00:02:57 #1370 [Verbose] >         //   //  |> Seq.append (seq { 1 .. input.Length - 1 })
00:02:57 #1371 [Verbose] >         //   //  |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:02:57 #1372 [Verbose] >         //     |> String.concat " "
00:02:57 #1373 [Verbose] >
00:02:57 #1374 [Verbose] >         // "FC",
00:02:57 #1375 [Verbose] >         // fun input =>
00:02:57 #1376 [Verbose] >         //     Array.singleton 0
00:02:57 #1377 [Verbose] >         //     |> Array.append (a ;[[ 1 .. input.Length - 1 ]])
00:02:57 #1378 [Verbose] >         // //    |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ ..
00:02:57 #1379 [Verbose] > i - 1 ]])
00:02:57 #1380 [Verbose] >         //     |> String.concat " "
00:02:57 #1381 [Verbose] >     ]]
00:02:57 #1382 [Verbose] >
00:02:57 #1383 [Verbose] > inl rec rotate_strings_tests () =
00:02:57 #1384 [Verbose] >     inl test_cases = [[
00:02:57 #1385 [Verbose] >         "abc", "bca cab abc"
00:02:57 #1386 [Verbose] >         "abcde", "bcdea cdeab deabc eabcd abcde"
00:02:57 #1387 [Verbose] >         "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde
00:02:57 #1388 [Verbose] > ghiabcdef hiabcdefg iabcdefgh abcdefghi"
00:02:57 #1389 [Verbose] >         "abab", "baba abab baba abab"
00:02:57 #1390 [Verbose] >         "aa", "aa aa"
00:02:57 #1391 [Verbose] >         "z", "z"
00:02:57 #1392 [Verbose] >     ]]
00:02:57 #1393 [Verbose] >
00:02:57 #1394 [Verbose] >     inl solutions = get_solutions ()
00:02:57 #1395 [Verbose] >
00:02:57 #1396 [Verbose] >     // inl is_fast () = true
00:02:57 #1397 [Verbose] >
00:02:57 #1398 [Verbose] >     inl count =
00:02:57 #1399 [Verbose] >         if is_fast ()
00:02:57 #1400 [Verbose] >         then 1000i32
00:02:57 #1401 [Verbose] >         else 2000000i32
00:02:57 #1402 [Verbose] >
00:02:57 #1403 [Verbose] >     run_all (nameof rotate_strings_tests) count solutions test_cases
00:02:57 #1404 [Verbose] >     |> sort_result_list
00:02:57 #1405 [Verbose] >
00:02:57 #1406 [Verbose] > rotate_strings_tests ()
00:02:57 #1407 [Verbose] > Building /tmp/!dotnet-repl/20240226-2116-3675-7511-71ce5104a213/main.spi
00:03:13 #1408 [Verbose] >
00:03:13 #1409 [Verbose] > ╭─[ 16.14s - stdout ]──────────────────────────────────────────────────────────╮
00:03:13 #1410 [Verbose] > │ type UH0 =                                                                   │
00:03:13 #1411 [Verbose] > │     | UH0_0 of string * string * UH0                                         │
00:03:13 #1412 [Verbose] > │     | UH0_1                                                                  │
00:03:13 #1413 [Verbose] > │ and Mut0 = {mutable l0 : uint64}                                             │
00:03:13 #1414 [Verbose] > │ and Mut1 = {mutable l0 : int32}                                              │
00:03:13 #1415 [Verbose] > │ and UH1 =                                                                    │
00:03:13 #1416 [Verbose] > │     | UH1_0 of int32 * UH1                                                   │
00:03:13 #1417 [Verbose] > │     | UH1_1                                                                  │
00:03:13 #1418 [Verbose] > │ and UH2 =                                                                    │
00:03:13 #1419 [Verbose] > │     | UH2_0 of string * UH2                                                  │
00:03:13 #1420 [Verbose] > │     | UH2_1                                                                  │
00:03:13 #1421 [Verbose] > │ and UH3 =                                                                    │
00:03:13 #1422 [Verbose] > │     | UH3_0 of int32 * string * (string -> string) * UH3                     │
00:03:13 #1423 [Verbose] > │     | UH3_1                                                                  │
00:03:13 #1424 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:03:13 #1425 [Verbose] > │     | US0_0                                                                  │
00:03:13 #1426 [Verbose] > │     | US0_1 of f1_0 : System.ConsoleColor                                    │
00:03:13 #1427 [Verbose] > │ and UH4 =                                                                    │
00:03:13 #1428 [Verbose] > │     | UH4_0 of int64 * int64 * UH4                                           │
00:03:13 #1429 [Verbose] > │     | UH4_1                                                                  │
00:03:13 #1430 [Verbose] > │ and Mut2 = {mutable l0 : uint64; mutable l1 : UH4; mutable l2 : int64}       │
00:03:13 #1431 [Verbose] > │ and UH5 =                                                                    │
00:03:13 #1432 [Verbose] > │     | UH5_0 of UH2 * US0 * UH5                                               │
00:03:13 #1433 [Verbose] > │     | UH5_1                                                                  │
00:03:13 #1434 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:03:13 #1435 [Verbose] > │     | US1_0                                                                  │
00:03:13 #1436 [Verbose] > │     | US1_1 of f1_0 : int64                                                  │
00:03:13 #1437 [Verbose] > │ and UH6 =                                                                    │
00:03:13 #1438 [Verbose] > │     | UH6_0 of int32 * int64 * UH6                                           │
00:03:13 #1439 [Verbose] > │     | UH6_1                                                                  │
00:03:13 #1440 [Verbose] > │ and Mut3 = {mutable l0 : uint64; mutable l1 : UH6; mutable l2 : int32}       │
00:03:13 #1441 [Verbose] > │ and UH7 =                                                                    │
00:03:13 #1442 [Verbose] > │     | UH7_0 of int32 * string * UH7                                          │
00:03:13 #1443 [Verbose] > │     | UH7_1                                                                  │
00:03:13 #1444 [Verbose] > │ let rec method2 (v0 : UH0, v1 : uint64) : uint64 =                           │
00:03:13 #1445 [Verbose] > │     match v0 with                                                            │
00:03:13 #1446 [Verbose] > │     | UH0_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:13 #1447 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:03:13 #1448 [Verbose] > │         method2(v4, v5)                                                      │
00:03:13 #1449 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:03:13 #1450 [Verbose] > │         v1                                                                   │
00:03:13 #1451 [Verbose] > │ and method3 (v0 : (struct (string * string) []), v1 : UH0, v2 : uint64) :    │
00:03:13 #1452 [Verbose] > │ uint64 =                                                                     │
00:03:13 #1453 [Verbose] > │     match v1 with                                                            │
00:03:13 #1454 [Verbose] > │     | UH0_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:13 #1455 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:13 #1456 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:03:13 #1457 [Verbose] > │         method3(v0, v5, v6)                                                  │
00:03:13 #1458 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:03:13 #1459 [Verbose] > │         v2                                                                   │
00:03:13 #1460 [Verbose] > │ and method1 (v0 : UH0) : (struct (string * string) []) =                     │
00:03:13 #1461 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:13 #1462 [Verbose] > │     let v2 : uint64 = method2(v0, v1)                                        │
00:03:13 #1463 [Verbose] > │     let v3 : (struct (string * string) []) = Array.zeroCreate<struct (string │
00:03:13 #1464 [Verbose] > │ * string)> (System.Convert.ToInt32(v2))                                      │
00:03:13 #1465 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:13 #1466 [Verbose] > │     let v5 : uint64 = method3(v3, v0, v4)                                    │
00:03:13 #1467 [Verbose] > │     v3                                                                       │
00:03:13 #1468 [Verbose] > │ and method4 (v0 : uint64, v1 : Mut0) : bool =                                │
00:03:13 #1469 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:03:13 #1470 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:03:13 #1471 [Verbose] > │     v3                                                                       │
00:03:13 #1472 [Verbose] > │ and method5 (v0 : int32, v1 : Mut1) : bool =                                 │
00:03:13 #1473 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:03:13 #1474 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:03:13 #1475 [Verbose] > │     v3                                                                       │
00:03:13 #1476 [Verbose] > │ and closure1 () (v0 : string) : string =                                     │
00:03:13 #1477 [Verbose] > │     let v1 : int32 = v0.Length                                               │
00:03:13 #1478 [Verbose] > │     let v2 : (int32 []) = Array.zeroCreate<int32> (1)                        │
00:03:13 #1479 [Verbose] > │     v2.[int 0] <- 0                                                          │
00:03:13 #1480 [Verbose] > │     let v3 : int32 = v1 - 1                                                  │
00:03:13 #1481 [Verbose] > │     let v4 : int32 = v3 - 1                                                  │
00:03:13 #1482 [Verbose] > │     let v5 : int32 = v4 + 1                                                  │
00:03:13 #1483 [Verbose] > │     let v6 : (int32 []) = Array.zeroCreate<int32> (v5)                       │
00:03:13 #1484 [Verbose] > │     let v7 : Mut1 = {l0 = 0} : Mut1                                          │
00:03:13 #1485 [Verbose] > │     while method5(v5, v7) do                                                 │
00:03:13 #1486 [Verbose] > │         let v9 : int32 = v7.l0                                               │
00:03:13 #1487 [Verbose] > │         let v10 : int32 = 1 + v9                                             │
00:03:13 #1488 [Verbose] > │         v6.[int v9] <- v10                                                   │
00:03:13 #1489 [Verbose] > │         let v11 : int32 = v9 + 1                                             │
00:03:13 #1490 [Verbose] > │         v7.l0 <- v11                                                         │
00:03:13 #1491 [Verbose] > │         ()                                                                   │
00:03:13 #1492 [Verbose] > │     let v12 : int32 = v6.Length                                              │
00:03:13 #1493 [Verbose] > │     let v13 : int32 = v2.Length                                              │
00:03:13 #1494 [Verbose] > │     let v14 : int32 = v12 + v13                                              │
00:03:13 #1495 [Verbose] > │     let v15 : (int32 []) = Array.zeroCreate<int32> (v14)                     │
00:03:13 #1496 [Verbose] > │     let v16 : Mut1 = {l0 = 0} : Mut1                                         │
00:03:13 #1497 [Verbose] > │     while method5(v14, v16) do                                               │
00:03:13 #1498 [Verbose] > │         let v18 : int32 = v16.l0                                             │
00:03:13 #1499 [Verbose] > │         let v19 : bool = v18 < v12                                           │
00:03:13 #1500 [Verbose] > │         let v23 : int32 =                                                    │
00:03:13 #1501 [Verbose] > │             if v19 then                                                      │
00:03:13 #1502 [Verbose] > │                 let v20 : int32 = v6.[int v18]                               │
00:03:13 #1503 [Verbose] > │                 v20                                                          │
00:03:13 #1504 [Verbose] > │             else                                                             │
00:03:13 #1505 [Verbose] > │                 let v21 : int32 = v18 - v12                                  │
00:03:13 #1506 [Verbose] > │                 let v22 : int32 = v2.[int v21]                               │
00:03:13 #1507 [Verbose] > │                 v22                                                          │
00:03:13 #1508 [Verbose] > │         v15.[int v18] <- v23                                                 │
00:03:13 #1509 [Verbose] > │         let v24 : int32 = v18 + 1                                            │
00:03:13 #1510 [Verbose] > │         v16.l0 <- v24                                                        │
00:03:13 #1511 [Verbose] > │         ()                                                                   │
00:03:13 #1512 [Verbose] > │     let v25 : int32 = v15.Length                                             │
00:03:13 #1513 [Verbose] > │     let v26 : (string []) = Array.zeroCreate<string> (v25)                   │
00:03:13 #1514 [Verbose] > │     let v27 : Mut1 = {l0 = 0} : Mut1                                         │
00:03:13 #1515 [Verbose] > │     while method5(v25, v27) do                                               │
00:03:13 #1516 [Verbose] > │         let v29 : int32 = v27.l0                                             │
00:03:13 #1517 [Verbose] > │         let v30 : int32 = v15.[int v29]                                      │
00:03:13 #1518 [Verbose] > │         let v31 : string = v0.[int v30..int v3]                              │
00:03:13 #1519 [Verbose] > │         let v32 : int32 = v30 - 1                                            │
00:03:13 #1520 [Verbose] > │         let v33 : string = v0.[int 0..int v32]                               │
00:03:13 #1521 [Verbose] > │         let v34 : string = v31 + v33                                         │
00:03:13 #1522 [Verbose] > │         v26.[int v29] <- v34                                                 │
00:03:13 #1523 [Verbose] > │         let v35 : int32 = v29 + 1                                            │
00:03:13 #1524 [Verbose] > │         v27.l0 <- v35                                                        │
00:03:13 #1525 [Verbose] > │         ()                                                                   │
00:03:13 #1526 [Verbose] > │     let v36 : string = " "                                                   │
00:03:13 #1527 [Verbose] > │     let v37 : string = v26 |> String.concat v36                              │
00:03:13 #1528 [Verbose] > │     v37                                                                      │
00:03:13 #1529 [Verbose] > │ and method6 (v0 : float, v1 : float) : UH1 =                                 │
00:03:13 #1530 [Verbose] > │     let v2 : bool = v1 < v0                                                  │
00:03:13 #1531 [Verbose] > │     if v2 then                                                               │
00:03:13 #1532 [Verbose] > │         let v3 : int32 = int32 v1                                            │
00:03:13 #1533 [Verbose] > │         let v4 : int32 = 1 + v3                                              │
00:03:13 #1534 [Verbose] > │         let v5 : float = v1 + 1.0                                            │
00:03:13 #1535 [Verbose] > │         let v6 : UH1 = method6(v0, v5)                                       │
00:03:13 #1536 [Verbose] > │         UH1_0(v4, v6)                                                        │
00:03:13 #1537 [Verbose] > │     else                                                                     │
00:03:13 #1538 [Verbose] > │         UH1_1                                                                │
00:03:13 #1539 [Verbose] > │ and method7 (v0 : UH1, v1 : UH1) : UH1 =                                     │
00:03:13 #1540 [Verbose] > │     match v0 with                                                            │
00:03:13 #1541 [Verbose] > │     | UH1_0(v2, v3) -> (* Cons *)                                            │
00:03:13 #1542 [Verbose] > │         let v4 : UH1 = method7(v3, v1)                                       │
00:03:13 #1543 [Verbose] > │         UH1_0(v2, v4)                                                        │
00:03:13 #1544 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:03:13 #1545 [Verbose] > │         v1                                                                   │
00:03:13 #1546 [Verbose] > │ and method8 (v0 : string, v1 : int32, v2 : UH1, v3 : UH2) : UH2 =            │
00:03:13 #1547 [Verbose] > │     match v2 with                                                            │
00:03:13 #1548 [Verbose] > │     | UH1_0(v4, v5) -> (* Cons *)                                            │
00:03:13 #1549 [Verbose] > │         let v6 : UH2 = method8(v0, v1, v5, v3)                               │
00:03:13 #1550 [Verbose] > │         let v7 : int32 = v1 - 1                                              │
00:03:13 #1551 [Verbose] > │         let v8 : string = v0.[int v4..int v7]                                │
00:03:13 #1552 [Verbose] > │         let v9 : bool = v4 = 0                                               │
00:03:13 #1553 [Verbose] > │         let v13 : string =                                                   │
00:03:13 #1554 [Verbose] > │             if v9 then                                                       │
00:03:13 #1555 [Verbose] > │                 let v10 : string = ""                                        │
00:03:13 #1556 [Verbose] > │                 v10                                                          │
00:03:13 #1557 [Verbose] > │             else                                                             │
00:03:13 #1558 [Verbose] > │                 let v11 : int32 = v4 - 1                                     │
00:03:13 #1559 [Verbose] > │                 let v12 : string = v0.[int 0..int v11]                       │
00:03:13 #1560 [Verbose] > │                 v12                                                          │
00:03:13 #1561 [Verbose] > │         let v14 : string = v8 + v13                                          │
00:03:13 #1562 [Verbose] > │         UH2_0(v14, v6)                                                       │
00:03:13 #1563 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:03:13 #1564 [Verbose] > │         v3                                                                   │
00:03:13 #1565 [Verbose] > │ and method10 (v0 : UH2, v1 : int32) : int32 =                                │
00:03:13 #1566 [Verbose] > │     match v0 with                                                            │
00:03:13 #1567 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:03:13 #1568 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:03:13 #1569 [Verbose] > │         method10(v3, v4)                                                     │
00:03:13 #1570 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:13 #1571 [Verbose] > │         v1                                                                   │
00:03:13 #1572 [Verbose] > │ and method11 (v0 : (string []), v1 : UH2, v2 : int32) : int32 =              │
00:03:13 #1573 [Verbose] > │     match v1 with                                                            │
00:03:13 #1574 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:03:13 #1575 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:03:13 #1576 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:03:13 #1577 [Verbose] > │         method11(v0, v4, v5)                                                 │
00:03:13 #1578 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:13 #1579 [Verbose] > │         v2                                                                   │
00:03:13 #1580 [Verbose] > │ and method9 (v0 : UH2) : (string []) =                                       │
00:03:13 #1581 [Verbose] > │     let v1 : int32 = 0                                                       │
00:03:13 #1582 [Verbose] > │     let v2 : int32 = method10(v0, v1)                                        │
00:03:13 #1583 [Verbose] > │     let v3 : (string []) = Array.zeroCreate<string> (v2)                     │
00:03:13 #1584 [Verbose] > │     let v4 : int32 = 0                                                       │
00:03:13 #1585 [Verbose] > │     let v5 : int32 = method11(v3, v0, v4)                                    │
00:03:13 #1586 [Verbose] > │     v3                                                                       │
00:03:13 #1587 [Verbose] > │ and closure2 () (v0 : string) : string =                                     │
00:03:13 #1588 [Verbose] > │     let v1 : int32 = v0.Length                                               │
00:03:13 #1589 [Verbose] > │     let v2 : int32 = v1 - 1                                                  │
00:03:13 #1590 [Verbose] > │     let v3 : int32 = v2 - 1                                                  │
00:03:13 #1591 [Verbose] > │     let v4 : float = float v3                                                │
00:03:13 #1592 [Verbose] > │     let v5 : float = v4 + 1.0                                                │
00:03:13 #1593 [Verbose] > │     let v6 : float = 0.0                                                     │
00:03:13 #1594 [Verbose] > │     let v7 : UH1 = method6(v5, v6)                                           │
00:03:13 #1595 [Verbose] > │     let v8 : int32 = 0                                                       │
00:03:13 #1596 [Verbose] > │     let v9 : UH1 = UH1_1                                                     │
00:03:13 #1597 [Verbose] > │     let v10 : UH1 = UH1_0(v8, v9)                                            │
00:03:13 #1598 [Verbose] > │     let v11 : UH1 = method7(v7, v10)                                         │
00:03:13 #1599 [Verbose] > │     let v12 : UH2 = UH2_1                                                    │
00:03:13 #1600 [Verbose] > │     let v13 : UH2 = method8(v0, v1, v11, v12)                                │
00:03:13 #1601 [Verbose] > │     let v14 : (string []) = method9(v13)                                     │
00:03:13 #1602 [Verbose] > │     let v15 : string = " "                                                   │
00:03:13 #1603 [Verbose] > │     let v16 : string = v14 |> String.concat v15                              │
00:03:13 #1604 [Verbose] > │     v16                                                                      │
00:03:13 #1605 [Verbose] > │ and method13 (v0 : UH3, v1 : uint64) : uint64 =                              │
00:03:13 #1606 [Verbose] > │     match v0 with                                                            │
00:03:13 #1607 [Verbose] > │     | UH3_0(v2, v3, v4, v5) -> (* Cons *)                                    │
00:03:13 #1608 [Verbose] > │         let v6 : uint64 = v1 + 1UL                                           │
00:03:13 #1609 [Verbose] > │         method13(v5, v6)                                                     │
00:03:13 #1610 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:03:13 #1611 [Verbose] > │         v1                                                                   │
00:03:13 #1612 [Verbose] > │ and method14 (v0 : (struct (int32 * string * (string -> string)) []), v1 :   │
00:03:13 #1613 [Verbose] > │ UH3, v2 : uint64) : uint64 =                                                 │
00:03:13 #1614 [Verbose] > │     match v1 with                                                            │
00:03:13 #1615 [Verbose] > │     | UH3_0(v3, v4, v5, v6) -> (* Cons *)                                    │
00:03:13 #1616 [Verbose] > │         v0.[int v2] <- struct (v3, v4, v5)                                   │
00:03:13 #1617 [Verbose] > │         let v7 : uint64 = v2 + 1UL                                           │
00:03:13 #1618 [Verbose] > │         method14(v0, v6, v7)                                                 │
00:03:13 #1619 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:03:13 #1620 [Verbose] > │         v2                                                                   │
00:03:13 #1621 [Verbose] > │ and method12 (v0 : UH3) : (struct (int32 * string * (string -> string)) [])  │
00:03:13 #1622 [Verbose] > │ =                                                                            │
00:03:13 #1623 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:13 #1624 [Verbose] > │     let v2 : uint64 = method13(v0, v1)                                       │
00:03:13 #1625 [Verbose] > │     let v3 : (struct (int32 * string * (string -> string)) []) =             │
00:03:13 #1626 [Verbose] > │ Array.zeroCreate<struct (int32 * string * (string -> string))>               │
00:03:13 #1627 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:03:13 #1628 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:13 #1629 [Verbose] > │     let v5 : uint64 = method14(v3, v0, v4)                                   │
00:03:13 #1630 [Verbose] > │     v3                                                                       │
00:03:13 #1631 [Verbose] > │ and method15 (v0 : Mut1) : bool =                                            │
00:03:13 #1632 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:03:13 #1633 [Verbose] > │     let v2 : bool = v1 < 2000001                                             │
00:03:13 #1634 [Verbose] > │     v2                                                                       │
00:03:13 #1635 [Verbose] > │ and closure3 (v0 : string, v1 : (string -> string)) (v2 : int32) : string =  │
00:03:13 #1636 [Verbose] > │     v1 v0                                                                    │
00:03:13 #1637 [Verbose] > │ and method16 (v0 : string, v1 : (string []), v2 : uint64) : bool =           │
00:03:13 #1638 [Verbose] > │     let v3 : uint64 = System.Convert.ToUInt64 v1.Length                      │
00:03:13 #1639 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:03:13 #1640 [Verbose] > │     if v4 then                                                               │
00:03:13 #1641 [Verbose] > │         let v5 : string = v1.[int v2]                                        │
00:03:13 #1642 [Verbose] > │         let v6 : bool = v0 = v5                                              │
00:03:13 #1643 [Verbose] > │         if v6 then                                                           │
00:03:13 #1644 [Verbose] > │             let v7 : uint64 = v2 + 1UL                                       │
00:03:13 #1645 [Verbose] > │             method16(v0, v1, v7)                                             │
00:03:13 #1646 [Verbose] > │         else                                                                 │
00:03:13 #1647 [Verbose] > │             false                                                            │
00:03:13 #1648 [Verbose] > │     else                                                                     │
00:03:13 #1649 [Verbose] > │         true                                                                 │
00:03:13 #1650 [Verbose] > │ and method17 (v0 : uint64, v1 : Mut2) : bool =                               │
00:03:13 #1651 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:03:13 #1652 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:03:13 #1653 [Verbose] > │     v3                                                                       │
00:03:13 #1654 [Verbose] > │ and method18 (v0 : UH4, v1 : UH4) : UH4 =                                    │
00:03:13 #1655 [Verbose] > │     match v0 with                                                            │
00:03:13 #1656 [Verbose] > │     | UH4_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:13 #1657 [Verbose] > │         let v5 : UH4 = UH4_0(v2, v3, v1)                                     │
00:03:13 #1658 [Verbose] > │         method18(v4, v5)                                                     │
00:03:13 #1659 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:03:13 #1660 [Verbose] > │         v1                                                                   │
00:03:13 #1661 [Verbose] > │ and method20 (v0 : UH4, v1 : int32) : int32 =                                │
00:03:13 #1662 [Verbose] > │     match v0 with                                                            │
00:03:13 #1663 [Verbose] > │     | UH4_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:13 #1664 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:03:13 #1665 [Verbose] > │         method20(v4, v5)                                                     │
00:03:13 #1666 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:03:13 #1667 [Verbose] > │         v1                                                                   │
00:03:13 #1668 [Verbose] > │ and method21 (v0 : (struct (int64 * int64) []), v1 : UH4, v2 : int32) :      │
00:03:13 #1669 [Verbose] > │ int32 =                                                                      │
00:03:13 #1670 [Verbose] > │     match v1 with                                                            │
00:03:13 #1671 [Verbose] > │     | UH4_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:13 #1672 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:13 #1673 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:03:13 #1674 [Verbose] > │         method21(v0, v5, v6)                                                 │
00:03:13 #1675 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:03:13 #1676 [Verbose] > │         v2                                                                   │
00:03:13 #1677 [Verbose] > │ and method19 (v0 : UH4) : (struct (int64 * int64) []) =                      │
00:03:13 #1678 [Verbose] > │     let v1 : int32 = 0                                                       │
00:03:13 #1679 [Verbose] > │     let v2 : int32 = method20(v0, v1)                                        │
00:03:13 #1680 [Verbose] > │     let v3 : (struct (int64 * int64) []) = Array.zeroCreate<struct (int64 *  │
00:03:13 #1681 [Verbose] > │ int64)> (v2)                                                                 │
00:03:13 #1682 [Verbose] > │     let v4 : int32 = 0                                                       │
00:03:13 #1683 [Verbose] > │     let v5 : int32 = method21(v3, v0, v4)                                    │
00:03:13 #1684 [Verbose] > │     v3                                                                       │
00:03:13 #1685 [Verbose] > │ and closure4 () struct (v0 : int64, v1 : int64) : int64 =                    │
00:03:13 #1686 [Verbose] > │     v1                                                                       │
00:03:13 #1687 [Verbose] > │ and method23 (v0 : UH5, v1 : uint64) : uint64 =                              │
00:03:13 #1688 [Verbose] > │     match v0 with                                                            │
00:03:13 #1689 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:13 #1690 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:03:13 #1691 [Verbose] > │         method23(v4, v5)                                                     │
00:03:13 #1692 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:03:13 #1693 [Verbose] > │         v1                                                                   │
00:03:13 #1694 [Verbose] > │ and method24 (v0 : (struct (UH2 * US0) []), v1 : UH5, v2 : uint64) : uint64  │
00:03:13 #1695 [Verbose] > │ =                                                                            │
00:03:13 #1696 [Verbose] > │     match v1 with                                                            │
00:03:13 #1697 [Verbose] > │     | UH5_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:13 #1698 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:13 #1699 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:03:13 #1700 [Verbose] > │         method24(v0, v5, v6)                                                 │
00:03:13 #1701 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:03:13 #1702 [Verbose] > │         v2                                                                   │
00:03:13 #1703 [Verbose] > │ and method22 (v0 : UH5) : (struct (UH2 * US0) []) =                          │
00:03:13 #1704 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:13 #1705 [Verbose] > │     let v2 : uint64 = method23(v0, v1)                                       │
00:03:13 #1706 [Verbose] > │     let v3 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 * US0)>  │
00:03:13 #1707 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:03:13 #1708 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:13 #1709 [Verbose] > │     let v5 : uint64 = method24(v3, v0, v4)                                   │
00:03:13 #1710 [Verbose] > │     v3                                                                       │
00:03:13 #1711 [Verbose] > │ and method26 (v0 : UH2, v1 : uint64) : uint64 =                              │
00:03:13 #1712 [Verbose] > │     match v0 with                                                            │
00:03:13 #1713 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:03:13 #1714 [Verbose] > │         let v4 : uint64 = v1 + 1UL                                           │
00:03:13 #1715 [Verbose] > │         method26(v3, v4)                                                     │
00:03:13 #1716 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:13 #1717 [Verbose] > │         v1                                                                   │
00:03:13 #1718 [Verbose] > │ and method27 (v0 : (string []), v1 : UH2, v2 : uint64) : uint64 =            │
00:03:13 #1719 [Verbose] > │     match v1 with                                                            │
00:03:13 #1720 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:03:13 #1721 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:03:13 #1722 [Verbose] > │         let v5 : uint64 = v2 + 1UL                                           │
00:03:13 #1723 [Verbose] > │         method27(v0, v4, v5)                                                 │
00:03:13 #1724 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:13 #1725 [Verbose] > │         v2                                                                   │
00:03:13 #1726 [Verbose] > │ and method25 (v0 : UH2) : (string []) =                                      │
00:03:13 #1727 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:13 #1728 [Verbose] > │     let v2 : uint64 = method26(v0, v1)                                       │
00:03:13 #1729 [Verbose] > │     let v3 : (string []) = Array.zeroCreate<string>                          │
00:03:13 #1730 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:03:13 #1731 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:13 #1732 [Verbose] > │     let v5 : uint64 = method27(v3, v0, v4)                                   │
00:03:13 #1733 [Verbose] > │     v3                                                                       │
00:03:13 #1734 [Verbose] > │ and closure5 () (v0 : int64) : US1 =                                         │
00:03:13 #1735 [Verbose] > │     US1_1(v0)                                                                │
00:03:13 #1736 [Verbose] > │ and method28 (v0 : uint64, v1 : Mut3) : bool =                               │
00:03:13 #1737 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:03:13 #1738 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:03:13 #1739 [Verbose] > │     v3                                                                       │
00:03:13 #1740 [Verbose] > │ and method29 (v0 : UH6, v1 : UH6) : UH6 =                                    │
00:03:13 #1741 [Verbose] > │     match v0 with                                                            │
00:03:13 #1742 [Verbose] > │     | UH6_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:13 #1743 [Verbose] > │         let v5 : UH6 = UH6_0(v2, v3, v1)                                     │
00:03:13 #1744 [Verbose] > │         method29(v4, v5)                                                     │
00:03:13 #1745 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:03:13 #1746 [Verbose] > │         v1                                                                   │
00:03:13 #1747 [Verbose] > │ and method31 (v0 : UH6, v1 : int32) : int32 =                                │
00:03:13 #1748 [Verbose] > │     match v0 with                                                            │
00:03:13 #1749 [Verbose] > │     | UH6_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:13 #1750 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:03:13 #1751 [Verbose] > │         method31(v4, v5)                                                     │
00:03:13 #1752 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:03:13 #1753 [Verbose] > │         v1                                                                   │
00:03:13 #1754 [Verbose] > │ and method32 (v0 : (struct (int32 * int64) []), v1 : UH6, v2 : int32) :      │
00:03:13 #1755 [Verbose] > │ int32 =                                                                      │
00:03:13 #1756 [Verbose] > │     match v1 with                                                            │
00:03:13 #1757 [Verbose] > │     | UH6_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:13 #1758 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:13 #1759 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:03:13 #1760 [Verbose] > │         method32(v0, v5, v6)                                                 │
00:03:13 #1761 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:03:13 #1762 [Verbose] > │         v2                                                                   │
00:03:13 #1763 [Verbose] > │ and method30 (v0 : UH6) : (struct (int32 * int64) []) =                      │
00:03:13 #1764 [Verbose] > │     let v1 : int32 = 0                                                       │
00:03:13 #1765 [Verbose] > │     let v2 : int32 = method31(v0, v1)                                        │
00:03:13 #1766 [Verbose] > │     let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 *  │
00:03:13 #1767 [Verbose] > │ int64)> (v2)                                                                 │
00:03:13 #1768 [Verbose] > │     let v4 : int32 = 0                                                       │
00:03:13 #1769 [Verbose] > │     let v5 : int32 = method32(v3, v0, v4)                                    │
00:03:13 #1770 [Verbose] > │     v3                                                                       │
00:03:13 #1771 [Verbose] > │ and method33 (v0 : UH2, v1 : UH7, v2 : int32) : struct (UH7 * int32) =       │
00:03:13 #1772 [Verbose] > │     match v0 with                                                            │
00:03:13 #1773 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:03:13 #1774 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:03:13 #1775 [Verbose] > │         let v6 : UH7 = UH7_0(v2, v3, v1)                                     │
00:03:13 #1776 [Verbose] > │         method33(v4, v6, v5)                                                 │
00:03:13 #1777 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:13 #1778 [Verbose] > │         struct (v1, v2)                                                      │
00:03:13 #1779 [Verbose] > │ and method34 (v0 : UH7, v1 : UH7) : UH7 =                                    │
00:03:13 #1780 [Verbose] > │     match v0 with                                                            │
00:03:13 #1781 [Verbose] > │     | UH7_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:13 #1782 [Verbose] > │         let v5 : UH7 = UH7_0(v2, v3, v1)                                     │
00:03:13 #1783 [Verbose] > │         method34(v4, v5)                                                     │
00:03:13 #1784 [Verbose] > │     | UH7_1 -> (* Nil *)                                                     │
00:03:13 #1785 [Verbose] > │         v1                                                                   │
00:03:13 #1786 [Verbose] > │ and method35 (v0 : Map<int32, int64>, v1 : UH7, v2 : UH2) : UH2 =            │
00:03:13 #1787 [Verbose] > │     match v1 with                                                            │
00:03:13 #1788 [Verbose] > │     | UH7_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:13 #1789 [Verbose] > │         let v6 : UH2 = method35(v0, v5, v2)                                  │
00:03:13 #1790 [Verbose] > │         let v7 : int64 = v0.[v3]                                             │
00:03:13 #1791 [Verbose] > │         let v8 : int32 = int32 v7                                            │
00:03:13 #1792 [Verbose] > │         let v9 : string = v4.PadRight v8                                     │
00:03:13 #1793 [Verbose] > │         UH2_0(v9, v6)                                                        │
00:03:13 #1794 [Verbose] > │     | UH7_1 -> (* Nil *)                                                     │
00:03:13 #1795 [Verbose] > │         v2                                                                   │
00:03:13 #1796 [Verbose] > │ and method37 (v0 : UH6, v1 : uint64) : uint64 =                              │
00:03:13 #1797 [Verbose] > │     match v0 with                                                            │
00:03:13 #1798 [Verbose] > │     | UH6_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:13 #1799 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:03:13 #1800 [Verbose] > │         method37(v4, v5)                                                     │
00:03:13 #1801 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:03:13 #1802 [Verbose] > │         v1                                                                   │
00:03:13 #1803 [Verbose] > │ and method38 (v0 : (struct (int32 * int64) []), v1 : UH6, v2 : uint64) :     │
00:03:13 #1804 [Verbose] > │ uint64 =                                                                     │
00:03:13 #1805 [Verbose] > │     match v1 with                                                            │
00:03:13 #1806 [Verbose] > │     | UH6_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:13 #1807 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:13 #1808 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:03:13 #1809 [Verbose] > │         method38(v0, v5, v6)                                                 │
00:03:13 #1810 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:03:13 #1811 [Verbose] > │         v2                                                                   │
00:03:13 #1812 [Verbose] > │ and method36 (v0 : UH6) : (struct (int32 * int64) []) =                      │
00:03:13 #1813 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:13 #1814 [Verbose] > │     let v2 : uint64 = method37(v0, v1)                                       │
00:03:13 #1815 [Verbose] > │     let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 *  │
00:03:13 #1816 [Verbose] > │ int64)> (System.Convert.ToInt32(v2))                                         │
00:03:13 #1817 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:13 #1818 [Verbose] > │     let v5 : uint64 = method38(v3, v0, v4)                                   │
00:03:13 #1819 [Verbose] > │     v3                                                                       │
00:03:13 #1820 [Verbose] > │ and closure6 () struct (v0 : int32, v1 : int64) : int64 =                    │
00:03:13 #1821 [Verbose] > │     v1                                                                       │
00:03:13 #1822 [Verbose] > │ and closure0 () () : unit =                                                  │
00:03:13 #1823 [Verbose] > │     let v0 : (unit -> unit) = closure0()                                     │
00:03:13 #1824 [Verbose] > │     let v1 : string = nameof v0                                              │
00:03:13 #1825 [Verbose] > │     let v2 : string = ""                                                     │
00:03:13 #1826 [Verbose] > │     System.Console.WriteLine v2                                              │
00:03:13 #1827 [Verbose] > │     System.Console.WriteLine v2                                              │
00:03:13 #1828 [Verbose] > │     let v3 : string = $"Test: {v1}"                                          │
00:03:13 #1829 [Verbose] > │     System.Console.WriteLine v3                                              │
00:03:13 #1830 [Verbose] > │     let v4 : string = "abc"                                                  │
00:03:13 #1831 [Verbose] > │     let v5 : string = "bca cab abc"                                          │
00:03:13 #1832 [Verbose] > │     let v6 : string = "abcde"                                                │
00:03:13 #1833 [Verbose] > │     let v7 : string = "bcdea cdeab deabc eabcd abcde"                        │
00:03:13 #1834 [Verbose] > │     let v8 : string = "abcdefghi"                                            │
00:03:13 #1835 [Verbose] > │     let v9 : string = "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde     │
00:03:13 #1836 [Verbose] > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi"                                     │
00:03:13 #1837 [Verbose] > │     let v10 : string = "abab"                                                │
00:03:13 #1838 [Verbose] > │     let v11 : string = "baba abab baba abab"                                 │
00:03:13 #1839 [Verbose] > │     let v12 : string = "aa"                                                  │
00:03:13 #1840 [Verbose] > │     let v13 : string = "aa aa"                                               │
00:03:13 #1841 [Verbose] > │     let v14 : string = "z"                                                   │
00:03:13 #1842 [Verbose] > │     let v15 : UH0 = UH0_1                                                    │
00:03:13 #1843 [Verbose] > │     let v16 : UH0 = UH0_0(v14, v14, v15)                                     │
00:03:13 #1844 [Verbose] > │     let v17 : UH0 = UH0_0(v12, v13, v16)                                     │
00:03:13 #1845 [Verbose] > │     let v18 : UH0 = UH0_0(v10, v11, v17)                                     │
00:03:13 #1846 [Verbose] > │     let v19 : UH0 = UH0_0(v8, v9, v18)                                       │
00:03:13 #1847 [Verbose] > │     let v20 : UH0 = UH0_0(v6, v7, v19)                                       │
00:03:13 #1848 [Verbose] > │     let v21 : UH0 = UH0_0(v4, v5, v20)                                       │
00:03:13 #1849 [Verbose] > │     let v22 : (struct (string * string) []) = method1(v21)                   │
00:03:13 #1850 [Verbose] > │     let v23 : uint64 = System.Convert.ToUInt64 v22.Length                    │
00:03:13 #1851 [Verbose] > │     let v24 : (struct (string * string * string * (int64 [])) []) =          │
00:03:13 #1852 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))>             │
00:03:13 #1853 [Verbose] > │ (System.Convert.ToInt32(v23))                                                │
00:03:13 #1854 [Verbose] > │     let v25 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:03:13 #1855 [Verbose] > │     while method4(v23, v25) do                                               │
00:03:13 #1856 [Verbose] > │         let v27 : uint64 = v25.l0                                            │
00:03:13 #1857 [Verbose] > │         let struct (v28 : string, v29 : string) = v22.[int v27]              │
00:03:13 #1858 [Verbose] > │         let v30 : string = $"%A{v28}"                                        │
00:03:13 #1859 [Verbose] > │         System.Console.WriteLine v2                                          │
00:03:13 #1860 [Verbose] > │         let v31 : string = $"Solution: {v30}  "                              │
00:03:13 #1861 [Verbose] > │         System.Console.WriteLine v31                                         │
00:03:13 #1862 [Verbose] > │         let v32 : int32 = 0                                                  │
00:03:13 #1863 [Verbose] > │         let v33 : string = "F"                                               │
00:03:13 #1864 [Verbose] > │         let v34 : (string -> string) = closure1()                            │
00:03:13 #1865 [Verbose] > │         let v35 : int32 = 1                                                  │
00:03:13 #1866 [Verbose] > │         let v36 : string = "FA"                                              │
00:03:13 #1867 [Verbose] > │         let v37 : (string -> string) = closure2()                            │
00:03:13 #1868 [Verbose] > │         let v38 : UH3 = UH3_1                                                │
00:03:13 #1869 [Verbose] > │         let v39 : UH3 = UH3_0(v35, v36, v37, v38)                            │
00:03:13 #1870 [Verbose] > │         let v40 : UH3 = UH3_0(v32, v33, v34, v39)                            │
00:03:13 #1871 [Verbose] > │         let v41 : (struct (int32 * string * (string -> string)) []) =        │
00:03:13 #1872 [Verbose] > │ method12(v40)                                                                │
00:03:13 #1873 [Verbose] > │         let v42 : uint64 = System.Convert.ToUInt64 v41.Length                │
00:03:13 #1874 [Verbose] > │         let v43 : (struct (string * int64) []) = Array.zeroCreate<struct     │
00:03:13 #1875 [Verbose] > │ (string * int64)> (System.Convert.ToInt32(v42))                              │
00:03:13 #1876 [Verbose] > │         let v44 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:03:13 #1877 [Verbose] > │         while method4(v42, v44) do                                           │
00:03:13 #1878 [Verbose] > │             let v46 : uint64 = v44.l0                                        │
00:03:13 #1879 [Verbose] > │             let struct (v47 : int32, v48 : string, v49 : (string -> string)) │
00:03:13 #1880 [Verbose] > │ = v41.[int v46]                                                              │
00:03:13 #1881 [Verbose] > │             let mutable result = None                                        │
00:03:13 #1882 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:13 #1883 [Verbose] > │             #if !WASM                                                        │
00:03:13 #1884 [Verbose] > │             ()                                                               │
00:03:13 #1885 [Verbose] > │             #else                                                            │
00:03:13 #1886 [Verbose] > │             ()                                                               │
00:03:13 #1887 [Verbose] > │             #endif                                                           │
00:03:13 #1888 [Verbose] > │             #else                                                            │
00:03:13 #1889 [Verbose] > │             System.GC.Collect ()                                             │
00:03:13 #1890 [Verbose] > │             ()                                                               │
00:03:13 #1891 [Verbose] > │             #endif                                                           │
00:03:13 #1892 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:13 #1893 [Verbose] > │             result |> Option.get                                             │
00:03:13 #1894 [Verbose] > │             let v50 : (unit -> System.Diagnostics.Stopwatch) =               │
00:03:13 #1895 [Verbose] > │ System.Diagnostics.Stopwatch                                                 │
00:03:13 #1896 [Verbose] > │             let v51 : System.Diagnostics.Stopwatch = v50 ()                  │
00:03:13 #1897 [Verbose] > │             v51.Start ()                                                     │
00:03:13 #1898 [Verbose] > │             let v52 : int64 = v51.ElapsedMilliseconds                        │
00:03:13 #1899 [Verbose] > │             let v53 : (int32 []) = Array.zeroCreate<int32> (2000001)         │
00:03:13 #1900 [Verbose] > │             let v54 : Mut1 = {l0 = 0} : Mut1                                 │
00:03:13 #1901 [Verbose] > │             while method15(v54) do                                           │
00:03:13 #1902 [Verbose] > │                 let v56 : int32 = v54.l0                                     │
00:03:13 #1903 [Verbose] > │                 v53.[int v56] <- v56                                         │
00:03:13 #1904 [Verbose] > │                 let v57 : int32 = v56 + 1                                    │
00:03:13 #1905 [Verbose] > │                 v54.l0 <- v57                                                │
00:03:13 #1906 [Verbose] > │                 ()                                                           │
00:03:13 #1907 [Verbose] > │             let v58 : (int32 -> string) = closure3(v28, v49)                 │
00:03:13 #1908 [Verbose] > │             let v59 : (string []) = v53 |> Array.Parallel.map v58            │
00:03:13 #1909 [Verbose] > │             let v60 : int32 = v59.Length                                     │
00:03:13 #1910 [Verbose] > │             let v61 : int32 = v60 - 1                                        │
00:03:13 #1911 [Verbose] > │             let v62 : string = v59.[int v61]                                 │
00:03:13 #1912 [Verbose] > │             let v63 : int64 = v51.ElapsedMilliseconds                        │
00:03:13 #1913 [Verbose] > │             let v64 : int64 = v63 - v52                                      │
00:03:13 #1914 [Verbose] > │             let v65 : string = $"Test case {v47 + 1}. {v48}. Time: {v64}  "  │
00:03:13 #1915 [Verbose] > │             System.Console.WriteLine v65                                     │
00:03:13 #1916 [Verbose] > │             v43.[int v46] <- struct (v62, v64)                               │
00:03:13 #1917 [Verbose] > │             let v66 : uint64 = v46 + 1UL                                     │
00:03:13 #1918 [Verbose] > │             v44.l0 <- v66                                                    │
00:03:13 #1919 [Verbose] > │             ()                                                               │
00:03:13 #1920 [Verbose] > │         let v67 : uint64 = System.Convert.ToUInt64 v43.Length                │
00:03:13 #1921 [Verbose] > │         let v68 : (string []) = Array.zeroCreate<string>                     │
00:03:13 #1922 [Verbose] > │ (System.Convert.ToInt32(v67))                                                │
00:03:13 #1923 [Verbose] > │         let v69 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:03:13 #1924 [Verbose] > │         while method4(v67, v69) do                                           │
00:03:13 #1925 [Verbose] > │             let v71 : uint64 = v69.l0                                        │
00:03:13 #1926 [Verbose] > │             let struct (v72 : string, v73 : int64) = v43.[int v71]           │
00:03:13 #1927 [Verbose] > │             v68.[int v71] <- v72                                             │
00:03:13 #1928 [Verbose] > │             let v74 : uint64 = v71 + 1UL                                     │
00:03:13 #1929 [Verbose] > │             v69.l0 <- v74                                                    │
00:03:13 #1930 [Verbose] > │             ()                                                               │
00:03:13 #1931 [Verbose] > │         let v75 : uint64 = System.Convert.ToUInt64 v68.Length                │
00:03:13 #1932 [Verbose] > │         let v76 : bool = v75 <= 1UL                                          │
00:03:13 #1933 [Verbose] > │         if v76 then                                                          │
00:03:13 #1934 [Verbose] > │             ()                                                               │
00:03:13 #1935 [Verbose] > │         else                                                                 │
00:03:13 #1936 [Verbose] > │             let v77 : string = v68.[int 0UL]                                 │
00:03:13 #1937 [Verbose] > │             let v78 : uint64 = 0UL                                           │
00:03:13 #1938 [Verbose] > │             let v79 : bool = method16(v77, v68, v78)                         │
00:03:13 #1939 [Verbose] > │             if v79 then                                                      │
00:03:13 #1940 [Verbose] > │                 ()                                                           │
00:03:13 #1941 [Verbose] > │             else                                                             │
00:03:13 #1942 [Verbose] > │                 let v80 : string = $"Challenge error: {v68}"                 │
00:03:13 #1943 [Verbose] > │                 failwith<unit> v80                                           │
00:03:13 #1944 [Verbose] > │         let v81 : string = $"%A{v29}"                                        │
00:03:13 #1945 [Verbose] > │         let v82 : (string []) = Array.zeroCreate<string>                     │
00:03:13 #1946 [Verbose] > │ (System.Convert.ToInt32(v67))                                                │
00:03:13 #1947 [Verbose] > │         let v83 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:03:13 #1948 [Verbose] > │         while method4(v67, v83) do                                           │
00:03:13 #1949 [Verbose] > │             let v85 : uint64 = v83.l0                                        │
00:03:13 #1950 [Verbose] > │             let struct (v86 : string, v87 : int64) = v43.[int v85]           │
00:03:13 #1951 [Verbose] > │             v82.[int v85] <- v86                                             │
00:03:13 #1952 [Verbose] > │             let v88 : uint64 = v85 + 1UL                                     │
00:03:13 #1953 [Verbose] > │             v83.l0 <- v88                                                    │
00:03:13 #1954 [Verbose] > │             ()                                                               │
00:03:13 #1955 [Verbose] > │         let v89 : string = v82.[int 0UL]                                     │
00:03:13 #1956 [Verbose] > │         let v90 : string = $"%A{v89}"                                        │
00:03:13 #1957 [Verbose] > │         let v91 : (int64 []) = Array.zeroCreate<int64>                       │
00:03:13 #1958 [Verbose] > │ (System.Convert.ToInt32(v67))                                                │
00:03:13 #1959 [Verbose] > │         let v92 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:03:13 #1960 [Verbose] > │         while method4(v67, v92) do                                           │
00:03:13 #1961 [Verbose] > │             let v94 : uint64 = v92.l0                                        │
00:03:13 #1962 [Verbose] > │             let struct (v95 : string, v96 : int64) = v43.[int v94]           │
00:03:13 #1963 [Verbose] > │             v91.[int v94] <- v96                                             │
00:03:13 #1964 [Verbose] > │             let v97 : uint64 = v94 + 1UL                                     │
00:03:13 #1965 [Verbose] > │             v92.l0 <- v97                                                    │
00:03:13 #1966 [Verbose] > │             ()                                                               │
00:03:13 #1967 [Verbose] > │         v24.[int v27] <- struct (v81, v30, v90, v91)                         │
00:03:13 #1968 [Verbose] > │         let v98 : uint64 = v27 + 1UL                                         │
00:03:13 #1969 [Verbose] > │         v25.l0 <- v98                                                        │
00:03:13 #1970 [Verbose] > │         ()                                                                   │
00:03:13 #1971 [Verbose] > │     let v99 : uint64 = System.Convert.ToUInt64 v24.Length                    │
00:03:13 #1972 [Verbose] > │     let v100 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 *      │
00:03:13 #1973 [Verbose] > │ US0)> (System.Convert.ToInt32(v99))                                          │
00:03:13 #1974 [Verbose] > │     let v101 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #1975 [Verbose] > │     while method4(v99, v101) do                                              │
00:03:13 #1976 [Verbose] > │         let v103 : uint64 = v101.l0                                          │
00:03:13 #1977 [Verbose] > │         let struct (v104 : string, v105 : string, v106 : string, v107 :      │
00:03:13 #1978 [Verbose] > │ (int64 [])) = v24.[int v103]                                                 │
00:03:13 #1979 [Verbose] > │         let v108 : uint64 = System.Convert.ToUInt64 v107.Length              │
00:03:13 #1980 [Verbose] > │         let v109 : UH4 = UH4_1                                               │
00:03:13 #1981 [Verbose] > │         let v110 : Mut2 = {l0 = 0UL; l1 = v109; l2 = 0L} : Mut2              │
00:03:13 #1982 [Verbose] > │         while method17(v108, v110) do                                        │
00:03:13 #1983 [Verbose] > │             let v112 : uint64 = v110.l0                                      │
00:03:13 #1984 [Verbose] > │             let struct (v113 : UH4, v114 : int64) = v110.l1, v110.l2         │
00:03:13 #1985 [Verbose] > │             let v115 : int64 = v107.[int v112]                               │
00:03:13 #1986 [Verbose] > │             let v116 : int64 = v114 + 1L                                     │
00:03:13 #1987 [Verbose] > │             let v117 : uint64 = v112 + 1UL                                   │
00:03:13 #1988 [Verbose] > │             let v118 : UH4 = UH4_0(v114, v115, v113)                         │
00:03:13 #1989 [Verbose] > │             v110.l0 <- v117                                                  │
00:03:13 #1990 [Verbose] > │             v110.l1 <- v118                                                  │
00:03:13 #1991 [Verbose] > │             v110.l2 <- v116                                                  │
00:03:13 #1992 [Verbose] > │             ()                                                               │
00:03:13 #1993 [Verbose] > │         let struct (v119 : UH4, v120 : int64) = v110.l1, v110.l2             │
00:03:13 #1994 [Verbose] > │         let v121 : UH4 = UH4_1                                               │
00:03:13 #1995 [Verbose] > │         let v122 : UH4 = method18(v119, v121)                                │
00:03:13 #1996 [Verbose] > │         let v123 : (struct (int64 * int64) []) = method19(v122)              │
00:03:13 #1997 [Verbose] > │         let v124 : int32 = v123.Length                                       │
00:03:13 #1998 [Verbose] > │         let v125 : (struct (int64 * int64) []) = Array.zeroCreate<struct     │
00:03:13 #1999 [Verbose] > │ (int64 * int64)> (v124)                                                      │
00:03:13 #2000 [Verbose] > │         let v126 : Mut1 = {l0 = 0} : Mut1                                    │
00:03:13 #2001 [Verbose] > │         while method5(v124, v126) do                                         │
00:03:13 #2002 [Verbose] > │             let v128 : int32 = v126.l0                                       │
00:03:13 #2003 [Verbose] > │             let struct (v129 : int64, v130 : int64) = v123.[int v128]        │
00:03:13 #2004 [Verbose] > │             let v131 : int64 = v129 + 1L                                     │
00:03:13 #2005 [Verbose] > │             v125.[int v128] <- struct (v131, v130)                           │
00:03:13 #2006 [Verbose] > │             let v132 : int32 = v128 + 1                                      │
00:03:13 #2007 [Verbose] > │             v126.l0 <- v132                                                  │
00:03:13 #2008 [Verbose] > │             ()                                                               │
00:03:13 #2009 [Verbose] > │         let v133 : (struct (int64 * int64) -> int64) = closure4()            │
00:03:13 #2010 [Verbose] > │         let v134 : (struct (int64 * int64) []) = v125 |> Array.sortBy v133   │
00:03:13 #2011 [Verbose] > │         let struct (v135 : int64, v136 : int64) = v134.[int 0]               │
00:03:13 #2012 [Verbose] > │         let v137 : string = $"%A{struct (v135, v136)}"                       │
00:03:13 #2013 [Verbose] > │         let v138 : bool = v104 = v106                                        │
00:03:13 #2014 [Verbose] > │         let v143 : US0 =                                                     │
00:03:13 #2015 [Verbose] > │             if v138 then                                                     │
00:03:13 #2016 [Verbose] > │                 let v139 : System.ConsoleColor =                             │
00:03:13 #2017 [Verbose] > │ System.ConsoleColor.DarkGreen                                                │
00:03:13 #2018 [Verbose] > │                 US0_1(v139)                                                  │
00:03:13 #2019 [Verbose] > │             else                                                             │
00:03:13 #2020 [Verbose] > │                 let v141 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:03:13 #2021 [Verbose] > │                 US0_1(v141)                                                  │
00:03:13 #2022 [Verbose] > │         let v144 : UH2 = UH2_1                                               │
00:03:13 #2023 [Verbose] > │         let v145 : UH2 = UH2_0(v137, v144)                                   │
00:03:13 #2024 [Verbose] > │         let v146 : UH2 = UH2_0(v106, v145)                                   │
00:03:13 #2025 [Verbose] > │         let v147 : UH2 = UH2_0(v104, v146)                                   │
00:03:13 #2026 [Verbose] > │         let v148 : UH2 = UH2_0(v105, v147)                                   │
00:03:13 #2027 [Verbose] > │         v100.[int v103] <- struct (v148, v143)                               │
00:03:13 #2028 [Verbose] > │         let v149 : uint64 = v103 + 1UL                                       │
00:03:13 #2029 [Verbose] > │         v101.l0 <- v149                                                      │
00:03:13 #2030 [Verbose] > │         ()                                                                   │
00:03:13 #2031 [Verbose] > │     let v150 : string = "Input"                                              │
00:03:13 #2032 [Verbose] > │     let v151 : string = "Expected"                                           │
00:03:13 #2033 [Verbose] > │     let v152 : string = "Result"                                             │
00:03:13 #2034 [Verbose] > │     let v153 : string = "Best"                                               │
00:03:13 #2035 [Verbose] > │     let v154 : UH2 = UH2_1                                                   │
00:03:13 #2036 [Verbose] > │     let v155 : UH2 = UH2_0(v153, v154)                                       │
00:03:13 #2037 [Verbose] > │     let v156 : UH2 = UH2_0(v152, v155)                                       │
00:03:13 #2038 [Verbose] > │     let v157 : UH2 = UH2_0(v151, v156)                                       │
00:03:13 #2039 [Verbose] > │     let v158 : UH2 = UH2_0(v150, v157)                                       │
00:03:13 #2040 [Verbose] > │     let v159 : US0 = US0_0                                                   │
00:03:13 #2041 [Verbose] > │     let v160 : string = "---"                                                │
00:03:13 #2042 [Verbose] > │     let v161 : UH2 = UH2_1                                                   │
00:03:13 #2043 [Verbose] > │     let v162 : UH2 = UH2_0(v160, v161)                                       │
00:03:13 #2044 [Verbose] > │     let v163 : UH2 = UH2_0(v160, v162)                                       │
00:03:13 #2045 [Verbose] > │     let v164 : UH2 = UH2_0(v160, v163)                                       │
00:03:13 #2046 [Verbose] > │     let v165 : UH2 = UH2_0(v160, v164)                                       │
00:03:13 #2047 [Verbose] > │     let v166 : US0 = US0_0                                                   │
00:03:13 #2048 [Verbose] > │     let v167 : UH5 = UH5_1                                                   │
00:03:13 #2049 [Verbose] > │     let v168 : UH5 = UH5_0(v165, v166, v167)                                 │
00:03:13 #2050 [Verbose] > │     let v169 : UH5 = UH5_0(v158, v159, v168)                                 │
00:03:13 #2051 [Verbose] > │     let v170 : (struct (UH2 * US0) []) = method22(v169)                      │
00:03:13 #2052 [Verbose] > │     let v171 : uint64 = System.Convert.ToUInt64 v170.Length                  │
00:03:13 #2053 [Verbose] > │     let v172 : uint64 = System.Convert.ToUInt64 v100.Length                  │
00:03:13 #2054 [Verbose] > │     let v173 : uint64 = v171 + v172                                          │
00:03:13 #2055 [Verbose] > │     let v174 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 *      │
00:03:13 #2056 [Verbose] > │ US0)> (System.Convert.ToInt32(v173))                                         │
00:03:13 #2057 [Verbose] > │     let v175 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2058 [Verbose] > │     while method4(v173, v175) do                                             │
00:03:13 #2059 [Verbose] > │         let v177 : uint64 = v175.l0                                          │
00:03:13 #2060 [Verbose] > │         let v178 : bool = v177 < v171                                        │
00:03:13 #2061 [Verbose] > │         let struct (v184 : UH2, v185 : US0) =                                │
00:03:13 #2062 [Verbose] > │             if v178 then                                                     │
00:03:13 #2063 [Verbose] > │                 let struct (v179 : UH2, v180 : US0) = v170.[int v177]        │
00:03:13 #2064 [Verbose] > │                 struct (v179, v180)                                          │
00:03:13 #2065 [Verbose] > │             else                                                             │
00:03:13 #2066 [Verbose] > │                 let v181 : uint64 = v177 - v171                              │
00:03:13 #2067 [Verbose] > │                 let struct (v182 : UH2, v183 : US0) = v100.[int v181]        │
00:03:13 #2068 [Verbose] > │                 struct (v182, v183)                                          │
00:03:13 #2069 [Verbose] > │         v174.[int v177] <- struct (v184, v185)                               │
00:03:13 #2070 [Verbose] > │         let v186 : uint64 = v177 + 1UL                                       │
00:03:13 #2071 [Verbose] > │         v175.l0 <- v186                                                      │
00:03:13 #2072 [Verbose] > │         ()                                                                   │
00:03:13 #2073 [Verbose] > │     let v187 : uint64 = System.Convert.ToUInt64 v174.Length                  │
00:03:13 #2074 [Verbose] > │     let v188 : ((string []) []) = Array.zeroCreate<(string [])>              │
00:03:13 #2075 [Verbose] > │ (System.Convert.ToInt32(v187))                                               │
00:03:13 #2076 [Verbose] > │     let v189 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2077 [Verbose] > │     while method4(v187, v189) do                                             │
00:03:13 #2078 [Verbose] > │         let v191 : uint64 = v189.l0                                          │
00:03:13 #2079 [Verbose] > │         let struct (v192 : UH2, v193 : US0) = v174.[int v191]                │
00:03:13 #2080 [Verbose] > │         let v194 : (string []) = method25(v192)                              │
00:03:13 #2081 [Verbose] > │         v188.[int v191] <- v194                                              │
00:03:13 #2082 [Verbose] > │         let v195 : uint64 = v191 + 1UL                                       │
00:03:13 #2083 [Verbose] > │         v189.l0 <- v195                                                      │
00:03:13 #2084 [Verbose] > │         ()                                                                   │
00:03:13 #2085 [Verbose] > │     let v196 : ((string []) []) = v188 |> Array.transpose                    │
00:03:13 #2086 [Verbose] > │     let v197 : uint64 = System.Convert.ToUInt64 v196.Length                  │
00:03:13 #2087 [Verbose] > │     let v198 : (int64 []) = Array.zeroCreate<int64>                          │
00:03:13 #2088 [Verbose] > │ (System.Convert.ToInt32(v197))                                               │
00:03:13 #2089 [Verbose] > │     let v199 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2090 [Verbose] > │     while method4(v197, v199) do                                             │
00:03:13 #2091 [Verbose] > │         let v201 : uint64 = v199.l0                                          │
00:03:13 #2092 [Verbose] > │         let v202 : (string []) = v196.[int v201]                             │
00:03:13 #2093 [Verbose] > │         let v203 : uint64 = System.Convert.ToUInt64 v202.Length              │
00:03:13 #2094 [Verbose] > │         let v204 : (int64 []) = Array.zeroCreate<int64>                      │
00:03:13 #2095 [Verbose] > │ (System.Convert.ToInt32(v203))                                               │
00:03:13 #2096 [Verbose] > │         let v205 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:03:13 #2097 [Verbose] > │         while method4(v203, v205) do                                         │
00:03:13 #2098 [Verbose] > │             let v207 : uint64 = v205.l0                                      │
00:03:13 #2099 [Verbose] > │             let v208 : string = v202.[int v207]                              │
00:03:13 #2100 [Verbose] > │             let v209 : int64 = System.Convert.ToInt64 v208.Length            │
00:03:13 #2101 [Verbose] > │             v204.[int v207] <- v209                                          │
00:03:13 #2102 [Verbose] > │             let v210 : uint64 = v207 + 1UL                                   │
00:03:13 #2103 [Verbose] > │             v205.l0 <- v210                                                  │
00:03:13 #2104 [Verbose] > │             ()                                                               │
00:03:13 #2105 [Verbose] > │         let v211 : (int64 []) = v204 |> Array.sortDescending                 │
00:03:13 #2106 [Verbose] > │         let v212 : int64 option = v211 |> Array.tryItem 0                    │
00:03:13 #2107 [Verbose] > │         let v213 : (int64 -> US1) = closure5()                               │
00:03:13 #2108 [Verbose] > │         let v214 : US1 = US1_0                                               │
00:03:13 #2109 [Verbose] > │         let v215 : US1 = v212 |> Option.map v213 |> Option.defaultValue v214 │
00:03:13 #2110 [Verbose] > │         let v218 : int64 =                                                   │
00:03:13 #2111 [Verbose] > │             match v215 with                                                  │
00:03:13 #2112 [Verbose] > │             | US1_0 -> (* None *)                                            │
00:03:13 #2113 [Verbose] > │                 0L                                                           │
00:03:13 #2114 [Verbose] > │             | US1_1(v216) -> (* Some *)                                      │
00:03:13 #2115 [Verbose] > │                 v216                                                         │
00:03:13 #2116 [Verbose] > │         v198.[int v201] <- v218                                              │
00:03:13 #2117 [Verbose] > │         let v219 : uint64 = v201 + 1UL                                       │
00:03:13 #2118 [Verbose] > │         v199.l0 <- v219                                                      │
00:03:13 #2119 [Verbose] > │         ()                                                                   │
00:03:13 #2120 [Verbose] > │     let v220 : uint64 = System.Convert.ToUInt64 v198.Length                  │
00:03:13 #2121 [Verbose] > │     let v221 : UH6 = UH6_1                                                   │
00:03:13 #2122 [Verbose] > │     let v222 : Mut3 = {l0 = 0UL; l1 = v221; l2 = 0} : Mut3                   │
00:03:13 #2123 [Verbose] > │     while method28(v220, v222) do                                            │
00:03:13 #2124 [Verbose] > │         let v224 : uint64 = v222.l0                                          │
00:03:13 #2125 [Verbose] > │         let struct (v225 : UH6, v226 : int32) = v222.l1, v222.l2             │
00:03:13 #2126 [Verbose] > │         let v227 : int64 = v198.[int v224]                                   │
00:03:13 #2127 [Verbose] > │         let v228 : int32 = v226 + 1                                          │
00:03:13 #2128 [Verbose] > │         let v229 : uint64 = v224 + 1UL                                       │
00:03:13 #2129 [Verbose] > │         let v230 : UH6 = UH6_0(v226, v227, v225)                             │
00:03:13 #2130 [Verbose] > │         v222.l0 <- v229                                                      │
00:03:13 #2131 [Verbose] > │         v222.l1 <- v230                                                      │
00:03:13 #2132 [Verbose] > │         v222.l2 <- v228                                                      │
00:03:13 #2133 [Verbose] > │         ()                                                                   │
00:03:13 #2134 [Verbose] > │     let struct (v231 : UH6, v232 : int32) = v222.l1, v222.l2                 │
00:03:13 #2135 [Verbose] > │     let v233 : UH6 = UH6_1                                                   │
00:03:13 #2136 [Verbose] > │     let v234 : UH6 = method29(v231, v233)                                    │
00:03:13 #2137 [Verbose] > │     let v235 : (struct (int32 * int64) []) = method30(v234)                  │
00:03:13 #2138 [Verbose] > │     let v236 : Map<int32, int64> = v235 |> Array.map (fun (struct (a, b)) -> │
00:03:13 #2139 [Verbose] > │ a, b) |> Map.ofArray                                                         │
00:03:13 #2140 [Verbose] > │     let v237 : (struct ((string []) * US0) []) = Array.zeroCreate<struct     │
00:03:13 #2141 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v187))                          │
00:03:13 #2142 [Verbose] > │     let v238 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2143 [Verbose] > │     while method4(v187, v238) do                                             │
00:03:13 #2144 [Verbose] > │         let v240 : uint64 = v238.l0                                          │
00:03:13 #2145 [Verbose] > │         let struct (v241 : UH2, v242 : US0) = v174.[int v240]                │
00:03:13 #2146 [Verbose] > │         let v243 : UH7 = UH7_1                                               │
00:03:13 #2147 [Verbose] > │         let v244 : int32 = 0                                                 │
00:03:13 #2148 [Verbose] > │         let struct (v245 : UH7, v246 : int32) = method33(v241, v243, v244)   │
00:03:13 #2149 [Verbose] > │         let v247 : UH7 = UH7_1                                               │
00:03:13 #2150 [Verbose] > │         let v248 : UH7 = method34(v245, v247)                                │
00:03:13 #2151 [Verbose] > │         let v249 : UH2 = UH2_1                                               │
00:03:13 #2152 [Verbose] > │         let v250 : UH2 = method35(v236, v248, v249)                          │
00:03:13 #2153 [Verbose] > │         let v251 : (string []) = method9(v250)                               │
00:03:13 #2154 [Verbose] > │         v237.[int v240] <- struct (v251, v242)                               │
00:03:13 #2155 [Verbose] > │         let v252 : uint64 = v240 + 1UL                                       │
00:03:13 #2156 [Verbose] > │         v238.l0 <- v252                                                      │
00:03:13 #2157 [Verbose] > │         ()                                                                   │
00:03:13 #2158 [Verbose] > │     System.Console.WriteLine v2                                              │
00:03:13 #2159 [Verbose] > │     let v253 : uint64 = System.Convert.ToUInt64 v237.Length                  │
00:03:13 #2160 [Verbose] > │     let v254 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2161 [Verbose] > │     while method4(v253, v254) do                                             │
00:03:13 #2162 [Verbose] > │         let v256 : uint64 = v254.l0                                          │
00:03:13 #2163 [Verbose] > │         let struct (v257 : (string []), v258 : US0) = v237.[int v256]        │
00:03:13 #2164 [Verbose] > │         match v258 with                                                      │
00:03:13 #2165 [Verbose] > │         | US0_0 -> (* None *)                                                │
00:03:13 #2166 [Verbose] > │             let mutable result = None                                        │
00:03:13 #2167 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:13 #2168 [Verbose] > │             #if !WASM                                                        │
00:03:13 #2169 [Verbose] > │             ()                                                               │
00:03:13 #2170 [Verbose] > │             #else                                                            │
00:03:13 #2171 [Verbose] > │             ()                                                               │
00:03:13 #2172 [Verbose] > │             #endif                                                           │
00:03:13 #2173 [Verbose] > │             #else                                                            │
00:03:13 #2174 [Verbose] > │             System.Console.ResetColor ()                                     │
00:03:13 #2175 [Verbose] > │             ()                                                               │
00:03:13 #2176 [Verbose] > │             #endif                                                           │
00:03:13 #2177 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:13 #2178 [Verbose] > │             result |> Option.get                                             │
00:03:13 #2179 [Verbose] > │             ()                                                               │
00:03:13 #2180 [Verbose] > │         | US0_1(v259) -> (* Some *)                                          │
00:03:13 #2181 [Verbose] > │             let mutable result = None                                        │
00:03:13 #2182 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:13 #2183 [Verbose] > │             #if !WASM                                                        │
00:03:13 #2184 [Verbose] > │             ()                                                               │
00:03:13 #2185 [Verbose] > │             #else                                                            │
00:03:13 #2186 [Verbose] > │             ()                                                               │
00:03:13 #2187 [Verbose] > │             #endif                                                           │
00:03:13 #2188 [Verbose] > │             #else                                                            │
00:03:13 #2189 [Verbose] > │             System.Console.ForegroundColor <- v259                           │
00:03:13 #2190 [Verbose] > │             ()                                                               │
00:03:13 #2191 [Verbose] > │             #endif                                                           │
00:03:13 #2192 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:13 #2193 [Verbose] > │             result |> Option.get                                             │
00:03:13 #2194 [Verbose] > │             ()                                                               │
00:03:13 #2195 [Verbose] > │         let v260 : string = "\t| "                                           │
00:03:13 #2196 [Verbose] > │         let v261 : string = System.String.Join (v260, v257)                  │
00:03:13 #2197 [Verbose] > │         System.Console.WriteLine v261                                        │
00:03:13 #2198 [Verbose] > │         let mutable result = None                                            │
00:03:13 #2199 [Verbose] > │         #if FABLE_COMPILER_RUST                                              │
00:03:13 #2200 [Verbose] > │         #if !WASM                                                            │
00:03:13 #2201 [Verbose] > │         ()                                                                   │
00:03:13 #2202 [Verbose] > │         #else                                                                │
00:03:13 #2203 [Verbose] > │         ()                                                                   │
00:03:13 #2204 [Verbose] > │         #endif                                                               │
00:03:13 #2205 [Verbose] > │         #else                                                                │
00:03:13 #2206 [Verbose] > │         System.Console.ResetColor ()                                         │
00:03:13 #2207 [Verbose] > │         ()                                                                   │
00:03:13 #2208 [Verbose] > │         #endif                                                               │
00:03:13 #2209 [Verbose] > │         |> fun x -> result <- Some x                                         │
00:03:13 #2210 [Verbose] > │         result |> Option.get                                                 │
00:03:13 #2211 [Verbose] > │         let v262 : uint64 = v256 + 1UL                                       │
00:03:13 #2212 [Verbose] > │         v254.l0 <- v262                                                      │
00:03:13 #2213 [Verbose] > │         ()                                                                   │
00:03:13 #2214 [Verbose] > │     let v263 : ((float []) []) = Array.zeroCreate<(float [])>                │
00:03:13 #2215 [Verbose] > │ (System.Convert.ToInt32(v99))                                                │
00:03:13 #2216 [Verbose] > │     let v264 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2217 [Verbose] > │     while method4(v99, v264) do                                              │
00:03:13 #2218 [Verbose] > │         let v266 : uint64 = v264.l0                                          │
00:03:13 #2219 [Verbose] > │         let struct (v267 : string, v268 : string, v269 : string, v270 :      │
00:03:13 #2220 [Verbose] > │ (int64 [])) = v24.[int v266]                                                 │
00:03:13 #2221 [Verbose] > │         let v271 : (int64 -> float) = float                                  │
00:03:13 #2222 [Verbose] > │         let v272 : uint64 = System.Convert.ToUInt64 v270.Length              │
00:03:13 #2223 [Verbose] > │         let v273 : (float []) = Array.zeroCreate<float>                      │
00:03:13 #2224 [Verbose] > │ (System.Convert.ToInt32(v272))                                               │
00:03:13 #2225 [Verbose] > │         let v274 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:03:13 #2226 [Verbose] > │         while method4(v272, v274) do                                         │
00:03:13 #2227 [Verbose] > │             let v276 : uint64 = v274.l0                                      │
00:03:13 #2228 [Verbose] > │             let v277 : int64 = v270.[int v276]                               │
00:03:13 #2229 [Verbose] > │             let v278 : float = v271 v277                                     │
00:03:13 #2230 [Verbose] > │             v273.[int v276] <- v278                                          │
00:03:13 #2231 [Verbose] > │             let v279 : uint64 = v276 + 1UL                                   │
00:03:13 #2232 [Verbose] > │             v274.l0 <- v279                                                  │
00:03:13 #2233 [Verbose] > │             ()                                                               │
00:03:13 #2234 [Verbose] > │         v263.[int v266] <- v273                                              │
00:03:13 #2235 [Verbose] > │         let v280 : uint64 = v266 + 1UL                                       │
00:03:13 #2236 [Verbose] > │         v264.l0 <- v280                                                      │
00:03:13 #2237 [Verbose] > │         ()                                                                   │
00:03:13 #2238 [Verbose] > │     let v281 : ((float []) []) = v263 |> Array.transpose                     │
00:03:13 #2239 [Verbose] > │     let v282 : uint64 = System.Convert.ToUInt64 v281.Length                  │
00:03:13 #2240 [Verbose] > │     let v283 : (float []) = Array.zeroCreate<float>                          │
00:03:13 #2241 [Verbose] > │ (System.Convert.ToInt32(v282))                                               │
00:03:13 #2242 [Verbose] > │     let v284 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2243 [Verbose] > │     while method4(v282, v284) do                                             │
00:03:13 #2244 [Verbose] > │         let v286 : uint64 = v284.l0                                          │
00:03:13 #2245 [Verbose] > │         let v287 : (float []) = v281.[int v286]                              │
00:03:13 #2246 [Verbose] > │         let v288 : float = v287 |> Array.average                             │
00:03:13 #2247 [Verbose] > │         v283.[int v286] <- v288                                              │
00:03:13 #2248 [Verbose] > │         let v289 : uint64 = v286 + 1UL                                       │
00:03:13 #2249 [Verbose] > │         v284.l0 <- v289                                                      │
00:03:13 #2250 [Verbose] > │         ()                                                                   │
00:03:13 #2251 [Verbose] > │     let v290 : (float -> int64) = int64                                      │
00:03:13 #2252 [Verbose] > │     let v291 : uint64 = System.Convert.ToUInt64 v283.Length                  │
00:03:13 #2253 [Verbose] > │     let v292 : (int64 []) = Array.zeroCreate<int64>                          │
00:03:13 #2254 [Verbose] > │ (System.Convert.ToInt32(v291))                                               │
00:03:13 #2255 [Verbose] > │     let v293 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2256 [Verbose] > │     while method4(v291, v293) do                                             │
00:03:13 #2257 [Verbose] > │         let v295 : uint64 = v293.l0                                          │
00:03:13 #2258 [Verbose] > │         let v296 : float = v283.[int v295]                                   │
00:03:13 #2259 [Verbose] > │         let v297 : int64 = v290 v296                                         │
00:03:13 #2260 [Verbose] > │         v292.[int v295] <- v297                                              │
00:03:13 #2261 [Verbose] > │         let v298 : uint64 = v295 + 1UL                                       │
00:03:13 #2262 [Verbose] > │         v293.l0 <- v298                                                      │
00:03:13 #2263 [Verbose] > │         ()                                                                   │
00:03:13 #2264 [Verbose] > │     let v299 : uint64 = System.Convert.ToUInt64 v292.Length                  │
00:03:13 #2265 [Verbose] > │     let v300 : UH6 = UH6_1                                                   │
00:03:13 #2266 [Verbose] > │     let v301 : Mut3 = {l0 = 0UL; l1 = v300; l2 = 0} : Mut3                   │
00:03:13 #2267 [Verbose] > │     while method28(v299, v301) do                                            │
00:03:13 #2268 [Verbose] > │         let v303 : uint64 = v301.l0                                          │
00:03:13 #2269 [Verbose] > │         let struct (v304 : UH6, v305 : int32) = v301.l1, v301.l2             │
00:03:13 #2270 [Verbose] > │         let v306 : int64 = v292.[int v303]                                   │
00:03:13 #2271 [Verbose] > │         let v307 : int32 = v305 + 1                                          │
00:03:13 #2272 [Verbose] > │         let v308 : uint64 = v303 + 1UL                                       │
00:03:13 #2273 [Verbose] > │         let v309 : UH6 = UH6_0(v305, v306, v304)                             │
00:03:13 #2274 [Verbose] > │         v301.l0 <- v308                                                      │
00:03:13 #2275 [Verbose] > │         v301.l1 <- v309                                                      │
00:03:13 #2276 [Verbose] > │         v301.l2 <- v307                                                      │
00:03:13 #2277 [Verbose] > │         ()                                                                   │
00:03:13 #2278 [Verbose] > │     let struct (v310 : UH6, v311 : int32) = v301.l1, v301.l2                 │
00:03:13 #2279 [Verbose] > │     let v312 : UH6 = UH6_1                                                   │
00:03:13 #2280 [Verbose] > │     let v313 : UH6 = method29(v310, v312)                                    │
00:03:13 #2281 [Verbose] > │     let v314 : (struct (int32 * int64) []) = method36(v313)                  │
00:03:13 #2282 [Verbose] > │     System.Console.WriteLine v2                                              │
00:03:13 #2283 [Verbose] > │     let v315 : string = "Average Ranking  "                                  │
00:03:13 #2284 [Verbose] > │     System.Console.WriteLine v315                                            │
00:03:13 #2285 [Verbose] > │     let v316 : (struct (int32 * int64) -> int64) = closure6()                │
00:03:13 #2286 [Verbose] > │     let v317 : (struct (int32 * int64) []) = v314 |> Array.sortBy v316       │
00:03:13 #2287 [Verbose] > │     let v318 : uint64 = System.Convert.ToUInt64 v317.Length                  │
00:03:13 #2288 [Verbose] > │     let v319 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2289 [Verbose] > │     while method4(v318, v319) do                                             │
00:03:13 #2290 [Verbose] > │         let v321 : uint64 = v319.l0                                          │
00:03:13 #2291 [Verbose] > │         let struct (v322 : int32, v323 : int64) = v317.[int v321]            │
00:03:13 #2292 [Verbose] > │         let v324 : string = $"Test case %d{v322 + 1}. Average Time: %A{v323} │
00:03:13 #2293 [Verbose] > │ "                                                                            │
00:03:13 #2294 [Verbose] > │         System.Console.WriteLine v324                                        │
00:03:13 #2295 [Verbose] > │         let v325 : uint64 = v321 + 1UL                                       │
00:03:13 #2296 [Verbose] > │         v319.l0 <- v325                                                      │
00:03:13 #2297 [Verbose] > │         ()                                                                   │
00:03:13 #2298 [Verbose] > │     ()                                                                       │
00:03:13 #2299 [Verbose] > │ and method0 () : unit =                                                      │
00:03:13 #2300 [Verbose] > │     let v0 : (unit -> unit) = closure0()                                     │
00:03:13 #2301 [Verbose] > │     let v1 : string = nameof v0                                              │
00:03:13 #2302 [Verbose] > │     let v2 : string = ""                                                     │
00:03:13 #2303 [Verbose] > │     System.Console.WriteLine v2                                              │
00:03:13 #2304 [Verbose] > │     System.Console.WriteLine v2                                              │
00:03:13 #2305 [Verbose] > │     let v3 : string = $"Test: {v1}"                                          │
00:03:13 #2306 [Verbose] > │     System.Console.WriteLine v3                                              │
00:03:13 #2307 [Verbose] > │     let v4 : string = "abc"                                                  │
00:03:13 #2308 [Verbose] > │     let v5 : string = "bca cab abc"                                          │
00:03:13 #2309 [Verbose] > │     let v6 : string = "abcde"                                                │
00:03:13 #2310 [Verbose] > │     let v7 : string = "bcdea cdeab deabc eabcd abcde"                        │
00:03:13 #2311 [Verbose] > │     let v8 : string = "abcdefghi"                                            │
00:03:13 #2312 [Verbose] > │     let v9 : string = "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde     │
00:03:13 #2313 [Verbose] > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi"                                     │
00:03:13 #2314 [Verbose] > │     let v10 : string = "abab"                                                │
00:03:13 #2315 [Verbose] > │     let v11 : string = "baba abab baba abab"                                 │
00:03:13 #2316 [Verbose] > │     let v12 : string = "aa"                                                  │
00:03:13 #2317 [Verbose] > │     let v13 : string = "aa aa"                                               │
00:03:13 #2318 [Verbose] > │     let v14 : string = "z"                                                   │
00:03:13 #2319 [Verbose] > │     let v15 : UH0 = UH0_1                                                    │
00:03:13 #2320 [Verbose] > │     let v16 : UH0 = UH0_0(v14, v14, v15)                                     │
00:03:13 #2321 [Verbose] > │     let v17 : UH0 = UH0_0(v12, v13, v16)                                     │
00:03:13 #2322 [Verbose] > │     let v18 : UH0 = UH0_0(v10, v11, v17)                                     │
00:03:13 #2323 [Verbose] > │     let v19 : UH0 = UH0_0(v8, v9, v18)                                       │
00:03:13 #2324 [Verbose] > │     let v20 : UH0 = UH0_0(v6, v7, v19)                                       │
00:03:13 #2325 [Verbose] > │     let v21 : UH0 = UH0_0(v4, v5, v20)                                       │
00:03:13 #2326 [Verbose] > │     let v22 : (struct (string * string) []) = method1(v21)                   │
00:03:13 #2327 [Verbose] > │     let v23 : uint64 = System.Convert.ToUInt64 v22.Length                    │
00:03:13 #2328 [Verbose] > │     let v24 : (struct (string * string * string * (int64 [])) []) =          │
00:03:13 #2329 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))>             │
00:03:13 #2330 [Verbose] > │ (System.Convert.ToInt32(v23))                                                │
00:03:13 #2331 [Verbose] > │     let v25 : Mut0 = {l0 = 0UL} : Mut0                                       │
00:03:13 #2332 [Verbose] > │     while method4(v23, v25) do                                               │
00:03:13 #2333 [Verbose] > │         let v27 : uint64 = v25.l0                                            │
00:03:13 #2334 [Verbose] > │         let struct (v28 : string, v29 : string) = v22.[int v27]              │
00:03:13 #2335 [Verbose] > │         let v30 : string = $"%A{v28}"                                        │
00:03:13 #2336 [Verbose] > │         System.Console.WriteLine v2                                          │
00:03:13 #2337 [Verbose] > │         let v31 : string = $"Solution: {v30}  "                              │
00:03:13 #2338 [Verbose] > │         System.Console.WriteLine v31                                         │
00:03:13 #2339 [Verbose] > │         let v32 : int32 = 0                                                  │
00:03:13 #2340 [Verbose] > │         let v33 : string = "F"                                               │
00:03:13 #2341 [Verbose] > │         let v34 : (string -> string) = closure1()                            │
00:03:13 #2342 [Verbose] > │         let v35 : int32 = 1                                                  │
00:03:13 #2343 [Verbose] > │         let v36 : string = "FA"                                              │
00:03:13 #2344 [Verbose] > │         let v37 : (string -> string) = closure2()                            │
00:03:13 #2345 [Verbose] > │         let v38 : UH3 = UH3_1                                                │
00:03:13 #2346 [Verbose] > │         let v39 : UH3 = UH3_0(v35, v36, v37, v38)                            │
00:03:13 #2347 [Verbose] > │         let v40 : UH3 = UH3_0(v32, v33, v34, v39)                            │
00:03:13 #2348 [Verbose] > │         let v41 : (struct (int32 * string * (string -> string)) []) =        │
00:03:13 #2349 [Verbose] > │ method12(v40)                                                                │
00:03:13 #2350 [Verbose] > │         let v42 : uint64 = System.Convert.ToUInt64 v41.Length                │
00:03:13 #2351 [Verbose] > │         let v43 : (struct (string * int64) []) = Array.zeroCreate<struct     │
00:03:13 #2352 [Verbose] > │ (string * int64)> (System.Convert.ToInt32(v42))                              │
00:03:13 #2353 [Verbose] > │         let v44 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:03:13 #2354 [Verbose] > │         while method4(v42, v44) do                                           │
00:03:13 #2355 [Verbose] > │             let v46 : uint64 = v44.l0                                        │
00:03:13 #2356 [Verbose] > │             let struct (v47 : int32, v48 : string, v49 : (string -> string)) │
00:03:13 #2357 [Verbose] > │ = v41.[int v46]                                                              │
00:03:13 #2358 [Verbose] > │             let mutable result = None                                        │
00:03:13 #2359 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:13 #2360 [Verbose] > │             #if !WASM                                                        │
00:03:13 #2361 [Verbose] > │             ()                                                               │
00:03:13 #2362 [Verbose] > │             #else                                                            │
00:03:13 #2363 [Verbose] > │             ()                                                               │
00:03:13 #2364 [Verbose] > │             #endif                                                           │
00:03:13 #2365 [Verbose] > │             #else                                                            │
00:03:13 #2366 [Verbose] > │             System.GC.Collect ()                                             │
00:03:13 #2367 [Verbose] > │             ()                                                               │
00:03:13 #2368 [Verbose] > │             #endif                                                           │
00:03:13 #2369 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:13 #2370 [Verbose] > │             result |> Option.get                                             │
00:03:13 #2371 [Verbose] > │             let v50 : (unit -> System.Diagnostics.Stopwatch) =               │
00:03:13 #2372 [Verbose] > │ System.Diagnostics.Stopwatch                                                 │
00:03:13 #2373 [Verbose] > │             let v51 : System.Diagnostics.Stopwatch = v50 ()                  │
00:03:13 #2374 [Verbose] > │             v51.Start ()                                                     │
00:03:13 #2375 [Verbose] > │             let v52 : int64 = v51.ElapsedMilliseconds                        │
00:03:13 #2376 [Verbose] > │             let v53 : (int32 []) = Array.zeroCreate<int32> (2000001)         │
00:03:13 #2377 [Verbose] > │             let v54 : Mut1 = {l0 = 0} : Mut1                                 │
00:03:13 #2378 [Verbose] > │             while method15(v54) do                                           │
00:03:13 #2379 [Verbose] > │                 let v56 : int32 = v54.l0                                     │
00:03:13 #2380 [Verbose] > │                 v53.[int v56] <- v56                                         │
00:03:13 #2381 [Verbose] > │                 let v57 : int32 = v56 + 1                                    │
00:03:13 #2382 [Verbose] > │                 v54.l0 <- v57                                                │
00:03:13 #2383 [Verbose] > │                 ()                                                           │
00:03:13 #2384 [Verbose] > │             let v58 : (int32 -> string) = closure3(v28, v49)                 │
00:03:13 #2385 [Verbose] > │             let v59 : (string []) = v53 |> Array.Parallel.map v58            │
00:03:13 #2386 [Verbose] > │             let v60 : int32 = v59.Length                                     │
00:03:13 #2387 [Verbose] > │             let v61 : int32 = v60 - 1                                        │
00:03:13 #2388 [Verbose] > │             let v62 : string = v59.[int v61]                                 │
00:03:13 #2389 [Verbose] > │             let v63 : int64 = v51.ElapsedMilliseconds                        │
00:03:13 #2390 [Verbose] > │             let v64 : int64 = v63 - v52                                      │
00:03:13 #2391 [Verbose] > │             let v65 : string = $"Test case {v47 + 1}. {v48}. Time: {v64}  "  │
00:03:13 #2392 [Verbose] > │             System.Console.WriteLine v65                                     │
00:03:13 #2393 [Verbose] > │             v43.[int v46] <- struct (v62, v64)                               │
00:03:13 #2394 [Verbose] > │             let v66 : uint64 = v46 + 1UL                                     │
00:03:13 #2395 [Verbose] > │             v44.l0 <- v66                                                    │
00:03:13 #2396 [Verbose] > │             ()                                                               │
00:03:13 #2397 [Verbose] > │         let v67 : uint64 = System.Convert.ToUInt64 v43.Length                │
00:03:13 #2398 [Verbose] > │         let v68 : (string []) = Array.zeroCreate<string>                     │
00:03:13 #2399 [Verbose] > │ (System.Convert.ToInt32(v67))                                                │
00:03:13 #2400 [Verbose] > │         let v69 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:03:13 #2401 [Verbose] > │         while method4(v67, v69) do                                           │
00:03:13 #2402 [Verbose] > │             let v71 : uint64 = v69.l0                                        │
00:03:13 #2403 [Verbose] > │             let struct (v72 : string, v73 : int64) = v43.[int v71]           │
00:03:13 #2404 [Verbose] > │             v68.[int v71] <- v72                                             │
00:03:13 #2405 [Verbose] > │             let v74 : uint64 = v71 + 1UL                                     │
00:03:13 #2406 [Verbose] > │             v69.l0 <- v74                                                    │
00:03:13 #2407 [Verbose] > │             ()                                                               │
00:03:13 #2408 [Verbose] > │         let v75 : uint64 = System.Convert.ToUInt64 v68.Length                │
00:03:13 #2409 [Verbose] > │         let v76 : bool = v75 <= 1UL                                          │
00:03:13 #2410 [Verbose] > │         if v76 then                                                          │
00:03:13 #2411 [Verbose] > │             ()                                                               │
00:03:13 #2412 [Verbose] > │         else                                                                 │
00:03:13 #2413 [Verbose] > │             let v77 : string = v68.[int 0UL]                                 │
00:03:13 #2414 [Verbose] > │             let v78 : uint64 = 0UL                                           │
00:03:13 #2415 [Verbose] > │             let v79 : bool = method16(v77, v68, v78)                         │
00:03:13 #2416 [Verbose] > │             if v79 then                                                      │
00:03:13 #2417 [Verbose] > │                 ()                                                           │
00:03:13 #2418 [Verbose] > │             else                                                             │
00:03:13 #2419 [Verbose] > │                 let v80 : string = $"Challenge error: {v68}"                 │
00:03:13 #2420 [Verbose] > │                 failwith<unit> v80                                           │
00:03:13 #2421 [Verbose] > │         let v81 : string = $"%A{v29}"                                        │
00:03:13 #2422 [Verbose] > │         let v82 : (string []) = Array.zeroCreate<string>                     │
00:03:13 #2423 [Verbose] > │ (System.Convert.ToInt32(v67))                                                │
00:03:13 #2424 [Verbose] > │         let v83 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:03:13 #2425 [Verbose] > │         while method4(v67, v83) do                                           │
00:03:13 #2426 [Verbose] > │             let v85 : uint64 = v83.l0                                        │
00:03:13 #2427 [Verbose] > │             let struct (v86 : string, v87 : int64) = v43.[int v85]           │
00:03:13 #2428 [Verbose] > │             v82.[int v85] <- v86                                             │
00:03:13 #2429 [Verbose] > │             let v88 : uint64 = v85 + 1UL                                     │
00:03:13 #2430 [Verbose] > │             v83.l0 <- v88                                                    │
00:03:13 #2431 [Verbose] > │             ()                                                               │
00:03:13 #2432 [Verbose] > │         let v89 : string = v82.[int 0UL]                                     │
00:03:13 #2433 [Verbose] > │         let v90 : string = $"%A{v89}"                                        │
00:03:13 #2434 [Verbose] > │         let v91 : (int64 []) = Array.zeroCreate<int64>                       │
00:03:13 #2435 [Verbose] > │ (System.Convert.ToInt32(v67))                                                │
00:03:13 #2436 [Verbose] > │         let v92 : Mut0 = {l0 = 0UL} : Mut0                                   │
00:03:13 #2437 [Verbose] > │         while method4(v67, v92) do                                           │
00:03:13 #2438 [Verbose] > │             let v94 : uint64 = v92.l0                                        │
00:03:13 #2439 [Verbose] > │             let struct (v95 : string, v96 : int64) = v43.[int v94]           │
00:03:13 #2440 [Verbose] > │             v91.[int v94] <- v96                                             │
00:03:13 #2441 [Verbose] > │             let v97 : uint64 = v94 + 1UL                                     │
00:03:13 #2442 [Verbose] > │             v92.l0 <- v97                                                    │
00:03:13 #2443 [Verbose] > │             ()                                                               │
00:03:13 #2444 [Verbose] > │         v24.[int v27] <- struct (v81, v30, v90, v91)                         │
00:03:13 #2445 [Verbose] > │         let v98 : uint64 = v27 + 1UL                                         │
00:03:13 #2446 [Verbose] > │         v25.l0 <- v98                                                        │
00:03:13 #2447 [Verbose] > │         ()                                                                   │
00:03:13 #2448 [Verbose] > │     let v99 : uint64 = System.Convert.ToUInt64 v24.Length                    │
00:03:13 #2449 [Verbose] > │     let v100 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 *      │
00:03:13 #2450 [Verbose] > │ US0)> (System.Convert.ToInt32(v99))                                          │
00:03:13 #2451 [Verbose] > │     let v101 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2452 [Verbose] > │     while method4(v99, v101) do                                              │
00:03:13 #2453 [Verbose] > │         let v103 : uint64 = v101.l0                                          │
00:03:13 #2454 [Verbose] > │         let struct (v104 : string, v105 : string, v106 : string, v107 :      │
00:03:13 #2455 [Verbose] > │ (int64 [])) = v24.[int v103]                                                 │
00:03:13 #2456 [Verbose] > │         let v108 : uint64 = System.Convert.ToUInt64 v107.Length              │
00:03:13 #2457 [Verbose] > │         let v109 : UH4 = UH4_1                                               │
00:03:13 #2458 [Verbose] > │         let v110 : Mut2 = {l0 = 0UL; l1 = v109; l2 = 0L} : Mut2              │
00:03:13 #2459 [Verbose] > │         while method17(v108, v110) do                                        │
00:03:13 #2460 [Verbose] > │             let v112 : uint64 = v110.l0                                      │
00:03:13 #2461 [Verbose] > │             let struct (v113 : UH4, v114 : int64) = v110.l1, v110.l2         │
00:03:13 #2462 [Verbose] > │             let v115 : int64 = v107.[int v112]                               │
00:03:13 #2463 [Verbose] > │             let v116 : int64 = v114 + 1L                                     │
00:03:13 #2464 [Verbose] > │             let v117 : uint64 = v112 + 1UL                                   │
00:03:13 #2465 [Verbose] > │             let v118 : UH4 = UH4_0(v114, v115, v113)                         │
00:03:13 #2466 [Verbose] > │             v110.l0 <- v117                                                  │
00:03:13 #2467 [Verbose] > │             v110.l1 <- v118                                                  │
00:03:13 #2468 [Verbose] > │             v110.l2 <- v116                                                  │
00:03:13 #2469 [Verbose] > │             ()                                                               │
00:03:13 #2470 [Verbose] > │         let struct (v119 : UH4, v120 : int64) = v110.l1, v110.l2             │
00:03:13 #2471 [Verbose] > │         let v121 : UH4 = UH4_1                                               │
00:03:13 #2472 [Verbose] > │         let v122 : UH4 = method18(v119, v121)                                │
00:03:13 #2473 [Verbose] > │         let v123 : (struct (int64 * int64) []) = method19(v122)              │
00:03:13 #2474 [Verbose] > │         let v124 : int32 = v123.Length                                       │
00:03:13 #2475 [Verbose] > │         let v125 : (struct (int64 * int64) []) = Array.zeroCreate<struct     │
00:03:13 #2476 [Verbose] > │ (int64 * int64)> (v124)                                                      │
00:03:13 #2477 [Verbose] > │         let v126 : Mut1 = {l0 = 0} : Mut1                                    │
00:03:13 #2478 [Verbose] > │         while method5(v124, v126) do                                         │
00:03:13 #2479 [Verbose] > │             let v128 : int32 = v126.l0                                       │
00:03:13 #2480 [Verbose] > │             let struct (v129 : int64, v130 : int64) = v123.[int v128]        │
00:03:13 #2481 [Verbose] > │             let v131 : int64 = v129 + 1L                                     │
00:03:13 #2482 [Verbose] > │             v125.[int v128] <- struct (v131, v130)                           │
00:03:13 #2483 [Verbose] > │             let v132 : int32 = v128 + 1                                      │
00:03:13 #2484 [Verbose] > │             v126.l0 <- v132                                                  │
00:03:13 #2485 [Verbose] > │             ()                                                               │
00:03:13 #2486 [Verbose] > │         let v133 : (struct (int64 * int64) -> int64) = closure4()            │
00:03:13 #2487 [Verbose] > │         let v134 : (struct (int64 * int64) []) = v125 |> Array.sortBy v133   │
00:03:13 #2488 [Verbose] > │         let struct (v135 : int64, v136 : int64) = v134.[int 0]               │
00:03:13 #2489 [Verbose] > │         let v137 : string = $"%A{struct (v135, v136)}"                       │
00:03:13 #2490 [Verbose] > │         let v138 : bool = v104 = v106                                        │
00:03:13 #2491 [Verbose] > │         let v143 : US0 =                                                     │
00:03:13 #2492 [Verbose] > │             if v138 then                                                     │
00:03:13 #2493 [Verbose] > │                 let v139 : System.ConsoleColor =                             │
00:03:13 #2494 [Verbose] > │ System.ConsoleColor.DarkGreen                                                │
00:03:13 #2495 [Verbose] > │                 US0_1(v139)                                                  │
00:03:13 #2496 [Verbose] > │             else                                                             │
00:03:13 #2497 [Verbose] > │                 let v141 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:03:13 #2498 [Verbose] > │                 US0_1(v141)                                                  │
00:03:13 #2499 [Verbose] > │         let v144 : UH2 = UH2_1                                               │
00:03:13 #2500 [Verbose] > │         let v145 : UH2 = UH2_0(v137, v144)                                   │
00:03:13 #2501 [Verbose] > │         let v146 : UH2 = UH2_0(v106, v145)                                   │
00:03:13 #2502 [Verbose] > │         let v147 : UH2 = UH2_0(v104, v146)                                   │
00:03:13 #2503 [Verbose] > │         let v148 : UH2 = UH2_0(v105, v147)                                   │
00:03:13 #2504 [Verbose] > │         v100.[int v103] <- struct (v148, v143)                               │
00:03:13 #2505 [Verbose] > │         let v149 : uint64 = v103 + 1UL                                       │
00:03:13 #2506 [Verbose] > │         v101.l0 <- v149                                                      │
00:03:13 #2507 [Verbose] > │         ()                                                                   │
00:03:13 #2508 [Verbose] > │     let v150 : string = "Input"                                              │
00:03:13 #2509 [Verbose] > │     let v151 : string = "Expected"                                           │
00:03:13 #2510 [Verbose] > │     let v152 : string = "Result"                                             │
00:03:13 #2511 [Verbose] > │     let v153 : string = "Best"                                               │
00:03:13 #2512 [Verbose] > │     let v154 : UH2 = UH2_1                                                   │
00:03:13 #2513 [Verbose] > │     let v155 : UH2 = UH2_0(v153, v154)                                       │
00:03:13 #2514 [Verbose] > │     let v156 : UH2 = UH2_0(v152, v155)                                       │
00:03:13 #2515 [Verbose] > │     let v157 : UH2 = UH2_0(v151, v156)                                       │
00:03:13 #2516 [Verbose] > │     let v158 : UH2 = UH2_0(v150, v157)                                       │
00:03:13 #2517 [Verbose] > │     let v159 : US0 = US0_0                                                   │
00:03:13 #2518 [Verbose] > │     let v160 : string = "---"                                                │
00:03:13 #2519 [Verbose] > │     let v161 : UH2 = UH2_1                                                   │
00:03:13 #2520 [Verbose] > │     let v162 : UH2 = UH2_0(v160, v161)                                       │
00:03:13 #2521 [Verbose] > │     let v163 : UH2 = UH2_0(v160, v162)                                       │
00:03:13 #2522 [Verbose] > │     let v164 : UH2 = UH2_0(v160, v163)                                       │
00:03:13 #2523 [Verbose] > │     let v165 : UH2 = UH2_0(v160, v164)                                       │
00:03:13 #2524 [Verbose] > │     let v166 : US0 = US0_0                                                   │
00:03:13 #2525 [Verbose] > │     let v167 : UH5 = UH5_1                                                   │
00:03:13 #2526 [Verbose] > │     let v168 : UH5 = UH5_0(v165, v166, v167)                                 │
00:03:13 #2527 [Verbose] > │     let v169 : UH5 = UH5_0(v158, v159, v168)                                 │
00:03:13 #2528 [Verbose] > │     let v170 : (struct (UH2 * US0) []) = method22(v169)                      │
00:03:13 #2529 [Verbose] > │     let v171 : uint64 = System.Convert.ToUInt64 v170.Length                  │
00:03:13 #2530 [Verbose] > │     let v172 : uint64 = System.Convert.ToUInt64 v100.Length                  │
00:03:13 #2531 [Verbose] > │     let v173 : uint64 = v171 + v172                                          │
00:03:13 #2532 [Verbose] > │     let v174 : (struct (UH2 * US0) []) = Array.zeroCreate<struct (UH2 *      │
00:03:13 #2533 [Verbose] > │ US0)> (System.Convert.ToInt32(v173))                                         │
00:03:13 #2534 [Verbose] > │     let v175 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2535 [Verbose] > │     while method4(v173, v175) do                                             │
00:03:13 #2536 [Verbose] > │         let v177 : uint64 = v175.l0                                          │
00:03:13 #2537 [Verbose] > │         let v178 : bool = v177 < v171                                        │
00:03:13 #2538 [Verbose] > │         let struct (v184 : UH2, v185 : US0) =                                │
00:03:13 #2539 [Verbose] > │             if v178 then                                                     │
00:03:13 #2540 [Verbose] > │                 let struct (v179 : UH2, v180 : US0) = v170.[int v177]        │
00:03:13 #2541 [Verbose] > │                 struct (v179, v180)                                          │
00:03:13 #2542 [Verbose] > │             else                                                             │
00:03:13 #2543 [Verbose] > │                 let v181 : uint64 = v177 - v171                              │
00:03:13 #2544 [Verbose] > │                 let struct (v182 : UH2, v183 : US0) = v100.[int v181]        │
00:03:13 #2545 [Verbose] > │                 struct (v182, v183)                                          │
00:03:13 #2546 [Verbose] > │         v174.[int v177] <- struct (v184, v185)                               │
00:03:13 #2547 [Verbose] > │         let v186 : uint64 = v177 + 1UL                                       │
00:03:13 #2548 [Verbose] > │         v175.l0 <- v186                                                      │
00:03:13 #2549 [Verbose] > │         ()                                                                   │
00:03:13 #2550 [Verbose] > │     let v187 : uint64 = System.Convert.ToUInt64 v174.Length                  │
00:03:13 #2551 [Verbose] > │     let v188 : ((string []) []) = Array.zeroCreate<(string [])>              │
00:03:13 #2552 [Verbose] > │ (System.Convert.ToInt32(v187))                                               │
00:03:13 #2553 [Verbose] > │     let v189 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2554 [Verbose] > │     while method4(v187, v189) do                                             │
00:03:13 #2555 [Verbose] > │         let v191 : uint64 = v189.l0                                          │
00:03:13 #2556 [Verbose] > │         let struct (v192 : UH2, v193 : US0) = v174.[int v191]                │
00:03:13 #2557 [Verbose] > │         let v194 : (string []) = method25(v192)                              │
00:03:13 #2558 [Verbose] > │         v188.[int v191] <- v194                                              │
00:03:13 #2559 [Verbose] > │         let v195 : uint64 = v191 + 1UL                                       │
00:03:13 #2560 [Verbose] > │         v189.l0 <- v195                                                      │
00:03:13 #2561 [Verbose] > │         ()                                                                   │
00:03:13 #2562 [Verbose] > │     let v196 : ((string []) []) = v188 |> Array.transpose                    │
00:03:13 #2563 [Verbose] > │     let v197 : uint64 = System.Convert.ToUInt64 v196.Length                  │
00:03:13 #2564 [Verbose] > │     let v198 : (int64 []) = Array.zeroCreate<int64>                          │
00:03:13 #2565 [Verbose] > │ (System.Convert.ToInt32(v197))                                               │
00:03:13 #2566 [Verbose] > │     let v199 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2567 [Verbose] > │     while method4(v197, v199) do                                             │
00:03:13 #2568 [Verbose] > │         let v201 : uint64 = v199.l0                                          │
00:03:13 #2569 [Verbose] > │         let v202 : (string []) = v196.[int v201]                             │
00:03:13 #2570 [Verbose] > │         let v203 : uint64 = System.Convert.ToUInt64 v202.Length              │
00:03:13 #2571 [Verbose] > │         let v204 : (int64 []) = Array.zeroCreate<int64>                      │
00:03:13 #2572 [Verbose] > │ (System.Convert.ToInt32(v203))                                               │
00:03:13 #2573 [Verbose] > │         let v205 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:03:13 #2574 [Verbose] > │         while method4(v203, v205) do                                         │
00:03:13 #2575 [Verbose] > │             let v207 : uint64 = v205.l0                                      │
00:03:13 #2576 [Verbose] > │             let v208 : string = v202.[int v207]                              │
00:03:13 #2577 [Verbose] > │             let v209 : int64 = System.Convert.ToInt64 v208.Length            │
00:03:13 #2578 [Verbose] > │             v204.[int v207] <- v209                                          │
00:03:13 #2579 [Verbose] > │             let v210 : uint64 = v207 + 1UL                                   │
00:03:13 #2580 [Verbose] > │             v205.l0 <- v210                                                  │
00:03:13 #2581 [Verbose] > │             ()                                                               │
00:03:13 #2582 [Verbose] > │         let v211 : (int64 []) = v204 |> Array.sortDescending                 │
00:03:13 #2583 [Verbose] > │         let v212 : int64 option = v211 |> Array.tryItem 0                    │
00:03:13 #2584 [Verbose] > │         let v213 : (int64 -> US1) = closure5()                               │
00:03:13 #2585 [Verbose] > │         let v214 : US1 = US1_0                                               │
00:03:13 #2586 [Verbose] > │         let v215 : US1 = v212 |> Option.map v213 |> Option.defaultValue v214 │
00:03:13 #2587 [Verbose] > │         let v218 : int64 =                                                   │
00:03:13 #2588 [Verbose] > │             match v215 with                                                  │
00:03:13 #2589 [Verbose] > │             | US1_0 -> (* None *)                                            │
00:03:13 #2590 [Verbose] > │                 0L                                                           │
00:03:13 #2591 [Verbose] > │             | US1_1(v216) -> (* Some *)                                      │
00:03:13 #2592 [Verbose] > │                 v216                                                         │
00:03:13 #2593 [Verbose] > │         v198.[int v201] <- v218                                              │
00:03:13 #2594 [Verbose] > │         let v219 : uint64 = v201 + 1UL                                       │
00:03:13 #2595 [Verbose] > │         v199.l0 <- v219                                                      │
00:03:13 #2596 [Verbose] > │         ()                                                                   │
00:03:13 #2597 [Verbose] > │     let v220 : uint64 = System.Convert.ToUInt64 v198.Length                  │
00:03:13 #2598 [Verbose] > │     let v221 : UH6 = UH6_1                                                   │
00:03:13 #2599 [Verbose] > │     let v222 : Mut3 = {l0 = 0UL; l1 = v221; l2 = 0} : Mut3                   │
00:03:13 #2600 [Verbose] > │     while method28(v220, v222) do                                            │
00:03:13 #2601 [Verbose] > │         let v224 : uint64 = v222.l0                                          │
00:03:13 #2602 [Verbose] > │         let struct (v225 : UH6, v226 : int32) = v222.l1, v222.l2             │
00:03:13 #2603 [Verbose] > │         let v227 : int64 = v198.[int v224]                                   │
00:03:13 #2604 [Verbose] > │         let v228 : int32 = v226 + 1                                          │
00:03:13 #2605 [Verbose] > │         let v229 : uint64 = v224 + 1UL                                       │
00:03:13 #2606 [Verbose] > │         let v230 : UH6 = UH6_0(v226, v227, v225)                             │
00:03:13 #2607 [Verbose] > │         v222.l0 <- v229                                                      │
00:03:13 #2608 [Verbose] > │         v222.l1 <- v230                                                      │
00:03:13 #2609 [Verbose] > │         v222.l2 <- v228                                                      │
00:03:13 #2610 [Verbose] > │         ()                                                                   │
00:03:13 #2611 [Verbose] > │     let struct (v231 : UH6, v232 : int32) = v222.l1, v222.l2                 │
00:03:13 #2612 [Verbose] > │     let v233 : UH6 = UH6_1                                                   │
00:03:13 #2613 [Verbose] > │     let v234 : UH6 = method29(v231, v233)                                    │
00:03:13 #2614 [Verbose] > │     let v235 : (struct (int32 * int64) []) = method30(v234)                  │
00:03:13 #2615 [Verbose] > │     let v236 : Map<int32, int64> = v235 |> Array.map (fun (struct (a, b)) -> │
00:03:13 #2616 [Verbose] > │ a, b) |> Map.ofArray                                                         │
00:03:13 #2617 [Verbose] > │     let v237 : (struct ((string []) * US0) []) = Array.zeroCreate<struct     │
00:03:13 #2618 [Verbose] > │ ((string []) * US0)> (System.Convert.ToInt32(v187))                          │
00:03:13 #2619 [Verbose] > │     let v238 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2620 [Verbose] > │     while method4(v187, v238) do                                             │
00:03:13 #2621 [Verbose] > │         let v240 : uint64 = v238.l0                                          │
00:03:13 #2622 [Verbose] > │         let struct (v241 : UH2, v242 : US0) = v174.[int v240]                │
00:03:13 #2623 [Verbose] > │         let v243 : UH7 = UH7_1                                               │
00:03:13 #2624 [Verbose] > │         let v244 : int32 = 0                                                 │
00:03:13 #2625 [Verbose] > │         let struct (v245 : UH7, v246 : int32) = method33(v241, v243, v244)   │
00:03:13 #2626 [Verbose] > │         let v247 : UH7 = UH7_1                                               │
00:03:13 #2627 [Verbose] > │         let v248 : UH7 = method34(v245, v247)                                │
00:03:13 #2628 [Verbose] > │         let v249 : UH2 = UH2_1                                               │
00:03:13 #2629 [Verbose] > │         let v250 : UH2 = method35(v236, v248, v249)                          │
00:03:13 #2630 [Verbose] > │         let v251 : (string []) = method9(v250)                               │
00:03:13 #2631 [Verbose] > │         v237.[int v240] <- struct (v251, v242)                               │
00:03:13 #2632 [Verbose] > │         let v252 : uint64 = v240 + 1UL                                       │
00:03:13 #2633 [Verbose] > │         v238.l0 <- v252                                                      │
00:03:13 #2634 [Verbose] > │         ()                                                                   │
00:03:13 #2635 [Verbose] > │     System.Console.WriteLine v2                                              │
00:03:13 #2636 [Verbose] > │     let v253 : uint64 = System.Convert.ToUInt64 v237.Length                  │
00:03:13 #2637 [Verbose] > │     let v254 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2638 [Verbose] > │     while method4(v253, v254) do                                             │
00:03:13 #2639 [Verbose] > │         let v256 : uint64 = v254.l0                                          │
00:03:13 #2640 [Verbose] > │         let struct (v257 : (string []), v258 : US0) = v237.[int v256]        │
00:03:13 #2641 [Verbose] > │         match v258 with                                                      │
00:03:13 #2642 [Verbose] > │         | US0_0 -> (* None *)                                                │
00:03:13 #2643 [Verbose] > │             let mutable result = None                                        │
00:03:13 #2644 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:13 #2645 [Verbose] > │             #if !WASM                                                        │
00:03:13 #2646 [Verbose] > │             ()                                                               │
00:03:13 #2647 [Verbose] > │             #else                                                            │
00:03:13 #2648 [Verbose] > │             ()                                                               │
00:03:13 #2649 [Verbose] > │             #endif                                                           │
00:03:13 #2650 [Verbose] > │             #else                                                            │
00:03:13 #2651 [Verbose] > │             System.Console.ResetColor ()                                     │
00:03:13 #2652 [Verbose] > │             ()                                                               │
00:03:13 #2653 [Verbose] > │             #endif                                                           │
00:03:13 #2654 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:13 #2655 [Verbose] > │             result |> Option.get                                             │
00:03:13 #2656 [Verbose] > │             ()                                                               │
00:03:13 #2657 [Verbose] > │         | US0_1(v259) -> (* Some *)                                          │
00:03:13 #2658 [Verbose] > │             let mutable result = None                                        │
00:03:13 #2659 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:13 #2660 [Verbose] > │             #if !WASM                                                        │
00:03:13 #2661 [Verbose] > │             ()                                                               │
00:03:13 #2662 [Verbose] > │             #else                                                            │
00:03:13 #2663 [Verbose] > │             ()                                                               │
00:03:13 #2664 [Verbose] > │             #endif                                                           │
00:03:13 #2665 [Verbose] > │             #else                                                            │
00:03:13 #2666 [Verbose] > │             System.Console.ForegroundColor <- v259                           │
00:03:13 #2667 [Verbose] > │             ()                                                               │
00:03:13 #2668 [Verbose] > │             #endif                                                           │
00:03:13 #2669 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:13 #2670 [Verbose] > │             result |> Option.get                                             │
00:03:13 #2671 [Verbose] > │             ()                                                               │
00:03:13 #2672 [Verbose] > │         let v260 : string = "\t| "                                           │
00:03:13 #2673 [Verbose] > │         let v261 : string = System.String.Join (v260, v257)                  │
00:03:13 #2674 [Verbose] > │         System.Console.WriteLine v261                                        │
00:03:13 #2675 [Verbose] > │         let mutable result = None                                            │
00:03:13 #2676 [Verbose] > │         #if FABLE_COMPILER_RUST                                              │
00:03:13 #2677 [Verbose] > │         #if !WASM                                                            │
00:03:13 #2678 [Verbose] > │         ()                                                                   │
00:03:13 #2679 [Verbose] > │         #else                                                                │
00:03:13 #2680 [Verbose] > │         ()                                                                   │
00:03:13 #2681 [Verbose] > │         #endif                                                               │
00:03:13 #2682 [Verbose] > │         #else                                                                │
00:03:13 #2683 [Verbose] > │         System.Console.ResetColor ()                                         │
00:03:13 #2684 [Verbose] > │         ()                                                                   │
00:03:13 #2685 [Verbose] > │         #endif                                                               │
00:03:13 #2686 [Verbose] > │         |> fun x -> result <- Some x                                         │
00:03:13 #2687 [Verbose] > │         result |> Option.get                                                 │
00:03:13 #2688 [Verbose] > │         let v262 : uint64 = v256 + 1UL                                       │
00:03:13 #2689 [Verbose] > │         v254.l0 <- v262                                                      │
00:03:13 #2690 [Verbose] > │         ()                                                                   │
00:03:13 #2691 [Verbose] > │     let v263 : ((float []) []) = Array.zeroCreate<(float [])>                │
00:03:13 #2692 [Verbose] > │ (System.Convert.ToInt32(v99))                                                │
00:03:13 #2693 [Verbose] > │     let v264 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2694 [Verbose] > │     while method4(v99, v264) do                                              │
00:03:13 #2695 [Verbose] > │         let v266 : uint64 = v264.l0                                          │
00:03:13 #2696 [Verbose] > │         let struct (v267 : string, v268 : string, v269 : string, v270 :      │
00:03:13 #2697 [Verbose] > │ (int64 [])) = v24.[int v266]                                                 │
00:03:13 #2698 [Verbose] > │         let v271 : (int64 -> float) = float                                  │
00:03:13 #2699 [Verbose] > │         let v272 : uint64 = System.Convert.ToUInt64 v270.Length              │
00:03:13 #2700 [Verbose] > │         let v273 : (float []) = Array.zeroCreate<float>                      │
00:03:13 #2701 [Verbose] > │ (System.Convert.ToInt32(v272))                                               │
00:03:13 #2702 [Verbose] > │         let v274 : Mut0 = {l0 = 0UL} : Mut0                                  │
00:03:13 #2703 [Verbose] > │         while method4(v272, v274) do                                         │
00:03:13 #2704 [Verbose] > │             let v276 : uint64 = v274.l0                                      │
00:03:13 #2705 [Verbose] > │             let v277 : int64 = v270.[int v276]                               │
00:03:13 #2706 [Verbose] > │             let v278 : float = v271 v277                                     │
00:03:13 #2707 [Verbose] > │             v273.[int v276] <- v278                                          │
00:03:13 #2708 [Verbose] > │             let v279 : uint64 = v276 + 1UL                                   │
00:03:13 #2709 [Verbose] > │             v274.l0 <- v279                                                  │
00:03:13 #2710 [Verbose] > │             ()                                                               │
00:03:13 #2711 [Verbose] > │         v263.[int v266] <- v273                                              │
00:03:13 #2712 [Verbose] > │         let v280 : uint64 = v266 + 1UL                                       │
00:03:13 #2713 [Verbose] > │         v264.l0 <- v280                                                      │
00:03:13 #2714 [Verbose] > │         ()                                                                   │
00:03:13 #2715 [Verbose] > │     let v281 : ((float []) []) = v263 |> Array.transpose                     │
00:03:13 #2716 [Verbose] > │     let v282 : uint64 = System.Convert.ToUInt64 v281.Length                  │
00:03:13 #2717 [Verbose] > │     let v283 : (float []) = Array.zeroCreate<float>                          │
00:03:13 #2718 [Verbose] > │ (System.Convert.ToInt32(v282))                                               │
00:03:13 #2719 [Verbose] > │     let v284 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2720 [Verbose] > │     while method4(v282, v284) do                                             │
00:03:13 #2721 [Verbose] > │         let v286 : uint64 = v284.l0                                          │
00:03:13 #2722 [Verbose] > │         let v287 : (float []) = v281.[int v286]                              │
00:03:13 #2723 [Verbose] > │         let v288 : float = v287 |> Array.average                             │
00:03:13 #2724 [Verbose] > │         v283.[int v286] <- v288                                              │
00:03:13 #2725 [Verbose] > │         let v289 : uint64 = v286 + 1UL                                       │
00:03:13 #2726 [Verbose] > │         v284.l0 <- v289                                                      │
00:03:13 #2727 [Verbose] > │         ()                                                                   │
00:03:13 #2728 [Verbose] > │     let v290 : (float -> int64) = int64                                      │
00:03:13 #2729 [Verbose] > │     let v291 : uint64 = System.Convert.ToUInt64 v283.Length                  │
00:03:13 #2730 [Verbose] > │     let v292 : (int64 []) = Array.zeroCreate<int64>                          │
00:03:13 #2731 [Verbose] > │ (System.Convert.ToInt32(v291))                                               │
00:03:13 #2732 [Verbose] > │     let v293 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2733 [Verbose] > │     while method4(v291, v293) do                                             │
00:03:13 #2734 [Verbose] > │         let v295 : uint64 = v293.l0                                          │
00:03:13 #2735 [Verbose] > │         let v296 : float = v283.[int v295]                                   │
00:03:13 #2736 [Verbose] > │         let v297 : int64 = v290 v296                                         │
00:03:13 #2737 [Verbose] > │         v292.[int v295] <- v297                                              │
00:03:13 #2738 [Verbose] > │         let v298 : uint64 = v295 + 1UL                                       │
00:03:13 #2739 [Verbose] > │         v293.l0 <- v298                                                      │
00:03:13 #2740 [Verbose] > │         ()                                                                   │
00:03:13 #2741 [Verbose] > │     let v299 : uint64 = System.Convert.ToUInt64 v292.Length                  │
00:03:13 #2742 [Verbose] > │     let v300 : UH6 = UH6_1                                                   │
00:03:13 #2743 [Verbose] > │     let v301 : Mut3 = {l0 = 0UL; l1 = v300; l2 = 0} : Mut3                   │
00:03:13 #2744 [Verbose] > │     while method28(v299, v301) do                                            │
00:03:13 #2745 [Verbose] > │         let v303 : uint64 = v301.l0                                          │
00:03:13 #2746 [Verbose] > │         let struct (v304 : UH6, v305 : int32) = v301.l1, v301.l2             │
00:03:13 #2747 [Verbose] > │         let v306 : int64 = v292.[int v303]                                   │
00:03:13 #2748 [Verbose] > │         let v307 : int32 = v305 + 1                                          │
00:03:13 #2749 [Verbose] > │         let v308 : uint64 = v303 + 1UL                                       │
00:03:13 #2750 [Verbose] > │         let v309 : UH6 = UH6_0(v305, v306, v304)                             │
00:03:13 #2751 [Verbose] > │         v301.l0 <- v308                                                      │
00:03:13 #2752 [Verbose] > │         v301.l1 <- v309                                                      │
00:03:13 #2753 [Verbose] > │         v301.l2 <- v307                                                      │
00:03:13 #2754 [Verbose] > │         ()                                                                   │
00:03:13 #2755 [Verbose] > │     let struct (v310 : UH6, v311 : int32) = v301.l1, v301.l2                 │
00:03:13 #2756 [Verbose] > │     let v312 : UH6 = UH6_1                                                   │
00:03:13 #2757 [Verbose] > │     let v313 : UH6 = method29(v310, v312)                                    │
00:03:13 #2758 [Verbose] > │     let v314 : (struct (int32 * int64) []) = method36(v313)                  │
00:03:13 #2759 [Verbose] > │     System.Console.WriteLine v2                                              │
00:03:13 #2760 [Verbose] > │     let v315 : string = "Average Ranking  "                                  │
00:03:13 #2761 [Verbose] > │     System.Console.WriteLine v315                                            │
00:03:13 #2762 [Verbose] > │     let v316 : (struct (int32 * int64) -> int64) = closure6()                │
00:03:13 #2763 [Verbose] > │     let v317 : (struct (int32 * int64) []) = v314 |> Array.sortBy v316       │
00:03:13 #2764 [Verbose] > │     let v318 : uint64 = System.Convert.ToUInt64 v317.Length                  │
00:03:13 #2765 [Verbose] > │     let v319 : Mut0 = {l0 = 0UL} : Mut0                                      │
00:03:13 #2766 [Verbose] > │     while method4(v318, v319) do                                             │
00:03:13 #2767 [Verbose] > │         let v321 : uint64 = v319.l0                                          │
00:03:13 #2768 [Verbose] > │         let struct (v322 : int32, v323 : int64) = v317.[int v321]            │
00:03:13 #2769 [Verbose] > │         let v324 : string = $"Test case %d{v322 + 1}. Average Time: %A{v323} │
00:03:13 #2770 [Verbose] > │ "                                                                            │
00:03:13 #2771 [Verbose] > │         System.Console.WriteLine v324                                        │
00:03:13 #2772 [Verbose] > │         let v325 : uint64 = v321 + 1UL                                       │
00:03:13 #2773 [Verbose] > │         v319.l0 <- v325                                                      │
00:03:13 #2774 [Verbose] > │         ()                                                                   │
00:03:13 #2775 [Verbose] > │     ()                                                                       │
00:03:13 #2776 [Verbose] > │ method0()                                                                    │
00:03:13 #2777 [Verbose] > │                                                                              │
00:03:13 #2778 [Verbose] > │                                                                              │
00:03:13 #2779 [Verbose] > │                                                                              │
00:03:13 #2780 [Verbose] > │ Test: v0                                                                     │
00:03:13 #2781 [Verbose] > │                                                                              │
00:03:13 #2782 [Verbose] > │ Solution: "abc"                                                              │
00:03:13 #2783 [Verbose] > │ Test case 1. F. Time: 872                                                    │
00:03:13 #2784 [Verbose] > │ Test case 2. FA. Time: 1027                                                  │
00:03:13 #2785 [Verbose] > │                                                                              │
00:03:13 #2786 [Verbose] > │ Solution: "abcde"                                                            │
00:03:13 #2787 [Verbose] > │ Test case 1. F. Time: 1169                                                   │
00:03:13 #2788 [Verbose] > │ Test case 2. FA. Time: 1308                                                  │
00:03:13 #2789 [Verbose] > │                                                                              │
00:03:13 #2790 [Verbose] > │ Solution: "abcdefghi"                                                        │
00:03:13 #2791 [Verbose] > │ Test case 1. F. Time: 1674                                                   │
00:03:13 #2792 [Verbose] > │ Test case 2. FA. Time: 2136                                                  │
00:03:13 #2793 [Verbose] > │                                                                              │
00:03:13 #2794 [Verbose] > │ Solution: "abab"                                                             │
00:03:13 #2795 [Verbose] > │ Test case 1. F. Time: 1006                                                   │
00:03:13 #2796 [Verbose] > │ Test case 2. FA. Time: 972                                                   │
00:03:13 #2797 [Verbose] > │                                                                              │
00:03:13 #2798 [Verbose] > │ Solution: "aa"                                                               │
00:03:13 #2799 [Verbose] > │ Test case 1. F. Time: 566                                                    │
00:03:13 #2800 [Verbose] > │ Test case 2. FA. Time: 553                                                   │
00:03:13 #2801 [Verbose] > │                                                                              │
00:03:13 #2802 [Verbose] > │ Solution: "z"                                                                │
00:03:13 #2803 [Verbose] > │ Test case 1. F. Time: 80                                                     │
00:03:13 #2804 [Verbose] > │ Test case 2. FA. Time: 74                                                    │
00:03:13 #2805 [Verbose] > │                                                                              │
00:03:13 #2806 [Verbose] > │ Input      	| Expected                                                         │
00:03:13 #2807 [Verbose] > │                                                                              │
00:03:13 #2808 [Verbose] > │ | Result                                                                     │
00:03:13 #2809 [Verbose] > │                                                                              │
00:03:13 #2810 [Verbose] > │ | Best                                                                       │
00:03:13 #2811 [Verbose] > │ ---        	| ---                                                              │
00:03:13 #2812 [Verbose] > │                                                                              │
00:03:13 #2813 [Verbose] > │ | ---                                                                        │
00:03:13 #2814 [Verbose] > │                                                                              │
00:03:13 #2815 [Verbose] > │ | ---                                                                        │
00:03:13 #2816 [Verbose] > │ "abc"      	| "bca cab abc"                                                    │
00:03:13 #2817 [Verbose] > │                                                                              │
00:03:13 #2818 [Verbose] > │ | "bca cab abc"                                                              │
00:03:13 #2819 [Verbose] > │                                                                              │
00:03:13 #2820 [Verbose] > │ | struct (1L, 872L)                                                          │
00:03:13 #2821 [Verbose] > │ "abcde"    	| "bcdea cdeab deabc eabcd abcde"                                  │
00:03:13 #2822 [Verbose] > │ | "bcdea cdeab deabc eabcd abcde"                                            │
00:03:13 #2823 [Verbose] > │ | struct (1L, 1169L)                                                         │
00:03:13 #2824 [Verbose] > │ "abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef     │
00:03:13 #2825 [Verbose] > │ hiabcdefg iabcdefgh abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd      │
00:03:13 #2826 [Verbose] > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| struct (1L, 1674L)        │
00:03:13 #2827 [Verbose] > │ "abab"     	| "baba abab baba abab"                                            │
00:03:13 #2828 [Verbose] > │ | "baba abab baba abab"                                                      │
00:03:13 #2829 [Verbose] > │ | struct (2L, 972L)                                                          │
00:03:13 #2830 [Verbose] > │ "aa"       	| "aa aa"                                                          │
00:03:13 #2831 [Verbose] > │                                                                              │
00:03:13 #2832 [Verbose] > │ | "aa aa"                                                                    │
00:03:13 #2833 [Verbose] > │                                                                              │
00:03:13 #2834 [Verbose] > │ | struct (2L, 553L)                                                          │
00:03:13 #2835 [Verbose] > │ "z"        	| "z"                                                              │
00:03:13 #2836 [Verbose] > │                                                                              │
00:03:13 #2837 [Verbose] > │ | "z"                                                                        │
00:03:13 #2838 [Verbose] > │                                                                              │
00:03:13 #2839 [Verbose] > │ | struct (2L, 74L)                                                           │
00:03:13 #2840 [Verbose] > │                                                                              │
00:03:13 #2841 [Verbose] > │ Average Ranking                                                              │
00:03:13 #2842 [Verbose] > │ Test case 1. Average Time: 894L                                              │
00:03:13 #2843 [Verbose] > │ Test case 2. Average Time: 1011L                                             │
00:03:13 #2844 [Verbose] > │                                                                              │
00:03:13 #2845 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:13 #2846 [Verbose] >
00:03:13 #2847 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:13 #2848 [Verbose] > // // test
00:03:13 #2849 [Verbose] > // // rust=
00:03:13 #2850 [Verbose] > // // print_code=false
00:03:13 #2851 [Verbose] >
00:03:13 #2852 [Verbose] > // rotate_strings_tests ()
00:03:13 #2853 [Verbose] > Building /tmp/!dotnet-repl/20240226-2116-5301-0169-0b67ade1447c/main.spi
00:03:13 #2854 [Verbose] >
00:03:13 #2855 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:13 #2856 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:13 #2857 [Verbose] > │ ## binary_search_tests                                                       │
00:03:13 #2858 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:13 #2859 [Verbose] >
00:03:13 #2860 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:13 #2861 [Verbose] > // // test
00:03:13 #2862 [Verbose] > // // timeout=90000
00:03:13 #2863 [Verbose] > // // print_code=true
00:03:13 #2864 [Verbose] >
00:03:13 #2865 [Verbose] > inl binary_search_semi_open_1 arr target left right =
00:03:13 #2866 [Verbose] >     inl rec body left right =
00:03:13 #2867 [Verbose] >         if left >= right
00:03:13 #2868 [Verbose] >         then None
00:03:13 #2869 [Verbose] >         else
00:03:13 #2870 [Verbose] >             inl mid = (left + right) / 2
00:03:13 #2871 [Verbose] >             inl item = index arr mid
00:03:13 #2872 [Verbose] >             if item = target
00:03:13 #2873 [Verbose] >             then Some mid
00:03:13 #2874 [Verbose] >             elif item < target
00:03:13 #2875 [Verbose] >             then loop (mid + 1) right
00:03:13 #2876 [Verbose] >             else loop left mid
00:03:13 #2877 [Verbose] >     and inl loop left right =
00:03:13 #2878 [Verbose] >         if var_is right |> not
00:03:13 #2879 [Verbose] >         then body left right
00:03:13 #2880 [Verbose] >         else
00:03:13 #2881 [Verbose] >             inl left = dyn left
00:03:13 #2882 [Verbose] >             join body left right
00:03:13 #2883 [Verbose] >     loop left right
00:03:13 #2884 [Verbose] >
00:03:13 #2885 [Verbose] > inl binary_search_closed_1 arr target left right =
00:03:13 #2886 [Verbose] >     inl rec body left right =
00:03:13 #2887 [Verbose] >         if left > right
00:03:13 #2888 [Verbose] >         then None
00:03:13 #2889 [Verbose] >         else
00:03:13 #2890 [Verbose] >             inl mid = (left + right) / 2
00:03:13 #2891 [Verbose] >             inl item = index arr mid
00:03:13 #2892 [Verbose] >             if item = target
00:03:13 #2893 [Verbose] >             then Some mid
00:03:13 #2894 [Verbose] >             elif item < target
00:03:13 #2895 [Verbose] >             then loop (mid + 1) right
00:03:13 #2896 [Verbose] >             else loop left (mid - 1)
00:03:13 #2897 [Verbose] >     and inl loop left right =
00:03:13 #2898 [Verbose] >         if var_is right |> not
00:03:13 #2899 [Verbose] >         then body left right
00:03:13 #2900 [Verbose] >         else
00:03:13 #2901 [Verbose] >             inl left = dyn left
00:03:13 #2902 [Verbose] >             join body left right
00:03:13 #2903 [Verbose] >     loop left right
00:03:13 #2904 [Verbose] >
00:03:13 #2905 [Verbose] > inl binary_search_semi_open_2 arr target left right =
00:03:13 #2906 [Verbose] >     let rec body left right =
00:03:13 #2907 [Verbose] >         if left >= right
00:03:13 #2908 [Verbose] >         then None
00:03:13 #2909 [Verbose] >         else
00:03:13 #2910 [Verbose] >             inl mid = (left + right) / 2
00:03:13 #2911 [Verbose] >             inl item = index arr mid
00:03:13 #2912 [Verbose] >             if item = target
00:03:13 #2913 [Verbose] >             then Some mid
00:03:13 #2914 [Verbose] >             elif item < target
00:03:13 #2915 [Verbose] >             then loop (mid + 1) right
00:03:13 #2916 [Verbose] >             else loop left mid
00:03:13 #2917 [Verbose] >     and inl loop left right = body left right
00:03:13 #2918 [Verbose] >     loop left right
00:03:13 #2919 [Verbose] >
00:03:13 #2920 [Verbose] > inl binary_search_closed_2 arr target left right =
00:03:13 #2921 [Verbose] >     let rec body left right =
00:03:13 #2922 [Verbose] >         if left > right
00:03:13 #2923 [Verbose] >         then None
00:03:13 #2924 [Verbose] >         else
00:03:13 #2925 [Verbose] >             inl mid = (left + right) / 2
00:03:13 #2926 [Verbose] >             inl item = index arr mid
00:03:13 #2927 [Verbose] >             if item = target
00:03:13 #2928 [Verbose] >             then Some mid
00:03:13 #2929 [Verbose] >             elif item < target
00:03:13 #2930 [Verbose] >             then loop (mid + 1) right
00:03:13 #2931 [Verbose] >             else loop left (mid - 1)
00:03:13 #2932 [Verbose] >     and inl loop left right = body left right
00:03:13 #2933 [Verbose] >     loop left right
00:03:13 #2934 [Verbose] >
00:03:13 #2935 [Verbose] > inl get_solutions () =
00:03:13 #2936 [Verbose] >     [[
00:03:13 #2937 [Verbose] >         "semi_open_1",
00:03:13 #2938 [Verbose] >         fun (arr, (target, len)) =>
00:03:13 #2939 [Verbose] >             binary_search_semi_open_1 arr target 0 len
00:03:13 #2940 [Verbose] >
00:03:13 #2941 [Verbose] >         "closed_1",
00:03:13 #2942 [Verbose] >         fun (arr, (target, len)) =>
00:03:13 #2943 [Verbose] >             binary_search_closed_1 arr target 0 (len - 1)
00:03:13 #2944 [Verbose] >
00:03:13 #2945 [Verbose] >         "semi_open_2",
00:03:13 #2946 [Verbose] >         fun (arr, (target, len)) =>
00:03:13 #2947 [Verbose] >             binary_search_semi_open_2 arr target 0 len
00:03:13 #2948 [Verbose] >
00:03:13 #2949 [Verbose] >         "closed_2",
00:03:13 #2950 [Verbose] >         fun (arr, (target, len)) =>
00:03:13 #2951 [Verbose] >             binary_search_closed_2 arr target 0 (len - 1)
00:03:13 #2952 [Verbose] >     ]]
00:03:13 #2953 [Verbose] >
00:03:13 #2954 [Verbose] > inl rec binary_search_tests () =
00:03:13 #2955 [Verbose] >     inl arr_with_len target len arr =
00:03:13 #2956 [Verbose] >         arr, (target, (len |> optionm'.default_with fun () => length arr))
00:03:13 #2957 [Verbose] >
00:03:13 #2958 [Verbose] >     inl test_cases = [[
00:03:13 #2959 [Verbose] >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32)
00:03:13 #2960 [Verbose] >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32)
00:03:13 #2961 [Verbose] >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32)
00:03:13 #2962 [Verbose] >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None
00:03:13 #2963 [Verbose] >         ((am'.init_series 1i32 100 1) |> arr_with_len 60 None), (Some 59)
00:03:13 #2964 [Verbose] >
00:03:13 #2965 [Verbose] >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some
00:03:13 #2966 [Verbose] > 3i32)
00:03:13 #2967 [Verbose] >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some
00:03:13 #2968 [Verbose] > 0i32)
00:03:13 #2969 [Verbose] >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some
00:03:13 #2970 [Verbose] > 6i32)
00:03:13 #2971 [Verbose] >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None
00:03:13 #2972 [Verbose] >         ((am'.init_series 1i32 100 1) |> arr_with_len 60 (Some 100)), (Some 59)
00:03:13 #2973 [Verbose] >     ]]
00:03:13 #2974 [Verbose] >
00:03:13 #2975 [Verbose] >     inl solutions = get_solutions ()
00:03:13 #2976 [Verbose] >
00:03:13 #2977 [Verbose] >     // inl is_fast () = true
00:03:13 #2978 [Verbose] >
00:03:13 #2979 [Verbose] >     inl count =
00:03:13 #2980 [Verbose] >         if is_fast ()
00:03:13 #2981 [Verbose] >         then 1000i32
00:03:13 #2982 [Verbose] >         else 8000000i32
00:03:13 #2983 [Verbose] >
00:03:13 #2984 [Verbose] >     run_all (nameof binary_search_tests) count solutions test_cases
00:03:13 #2985 [Verbose] >     |> sort_result_list
00:03:13 #2986 [Verbose] >
00:03:13 #2987 [Verbose] >
00:03:13 #2988 [Verbose] > let main () =
00:03:13 #2989 [Verbose] >     binary_search_tests ()
00:03:13 #2990 [Verbose] > Building /tmp/!dotnet-repl/20240226-2116-5314-1475-1f55e4f4acfd/main.spi
00:03:23 #2991 [Verbose] >
00:03:23 #2992 [Verbose] > ╭─[ 10.31s - stdout ]──────────────────────────────────────────────────────────╮
00:03:23 #2993 [Verbose] > │ type Mut0 = {mutable l0 : int32}                                             │
00:03:23 #2994 [Verbose] > │ and [<Struct>] US0 =                                                         │
00:03:23 #2995 [Verbose] > │     | US0_0                                                                  │
00:03:23 #2996 [Verbose] > │     | US0_1 of f1_0 : int32                                                  │
00:03:23 #2997 [Verbose] > │ and UH0 =                                                                    │
00:03:23 #2998 [Verbose] > │     | UH0_0 of (int32 []) * int32 * int32 * US0 * UH0                        │
00:03:23 #2999 [Verbose] > │     | UH0_1                                                                  │
00:03:23 #3000 [Verbose] > │ and Mut1 = {mutable l0 : uint64}                                             │
00:03:23 #3001 [Verbose] > │ and UH1 =                                                                    │
00:03:23 #3002 [Verbose] > │     | UH1_0 of int32 * string * (struct ((int32 []) * int32 * int32) -> US0) │
00:03:23 #3003 [Verbose] > │ * UH1                                                                        │
00:03:23 #3004 [Verbose] > │     | UH1_1                                                                  │
00:03:23 #3005 [Verbose] > │ and UH2 =                                                                    │
00:03:23 #3006 [Verbose] > │     | UH2_0 of string * UH2                                                  │
00:03:23 #3007 [Verbose] > │     | UH2_1                                                                  │
00:03:23 #3008 [Verbose] > │ and [<Struct>] US1 =                                                         │
00:03:23 #3009 [Verbose] > │     | US1_0                                                                  │
00:03:23 #3010 [Verbose] > │     | US1_1 of f1_0 : System.ConsoleColor                                    │
00:03:23 #3011 [Verbose] > │ and UH3 =                                                                    │
00:03:23 #3012 [Verbose] > │     | UH3_0 of int64 * int64 * UH3                                           │
00:03:23 #3013 [Verbose] > │     | UH3_1                                                                  │
00:03:23 #3014 [Verbose] > │ and Mut2 = {mutable l0 : uint64; mutable l1 : UH3; mutable l2 : int64}       │
00:03:23 #3015 [Verbose] > │ and UH4 =                                                                    │
00:03:23 #3016 [Verbose] > │     | UH4_0 of UH2 * US1 * UH4                                               │
00:03:23 #3017 [Verbose] > │     | UH4_1                                                                  │
00:03:23 #3018 [Verbose] > │ and [<Struct>] US2 =                                                         │
00:03:23 #3019 [Verbose] > │     | US2_0                                                                  │
00:03:23 #3020 [Verbose] > │     | US2_1 of f1_0 : int64                                                  │
00:03:23 #3021 [Verbose] > │ and UH5 =                                                                    │
00:03:23 #3022 [Verbose] > │     | UH5_0 of int32 * int64 * UH5                                           │
00:03:23 #3023 [Verbose] > │     | UH5_1                                                                  │
00:03:23 #3024 [Verbose] > │ and Mut3 = {mutable l0 : uint64; mutable l1 : UH5; mutable l2 : int32}       │
00:03:23 #3025 [Verbose] > │ and UH6 =                                                                    │
00:03:23 #3026 [Verbose] > │     | UH6_0 of int32 * string * UH6                                          │
00:03:23 #3027 [Verbose] > │     | UH6_1                                                                  │
00:03:23 #3028 [Verbose] > │ let rec method1 (v0 : (int32 [])) : (int32 []) =                             │
00:03:23 #3029 [Verbose] > │     v0                                                                       │
00:03:23 #3030 [Verbose] > │ and method2 (v0 : Mut0) : bool =                                             │
00:03:23 #3031 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:03:23 #3032 [Verbose] > │     let v2 : bool = v1 < 100                                                 │
00:03:23 #3033 [Verbose] > │     v2                                                                       │
00:03:23 #3034 [Verbose] > │ and method4 (v0 : UH0, v1 : uint64) : uint64 =                               │
00:03:23 #3035 [Verbose] > │     match v0 with                                                            │
00:03:23 #3036 [Verbose] > │     | UH0_0(v2, v3, v4, v5, v6) -> (* Cons *)                                │
00:03:23 #3037 [Verbose] > │         let v7 : uint64 = v1 + 1UL                                           │
00:03:23 #3038 [Verbose] > │         method4(v6, v7)                                                      │
00:03:23 #3039 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:03:23 #3040 [Verbose] > │         v1                                                                   │
00:03:23 #3041 [Verbose] > │ and method5 (v0 : (struct ((int32 []) * int32 * int32 * US0) []), v1 : UH0,  │
00:03:23 #3042 [Verbose] > │ v2 : uint64) : uint64 =                                                      │
00:03:23 #3043 [Verbose] > │     match v1 with                                                            │
00:03:23 #3044 [Verbose] > │     | UH0_0(v3, v4, v5, v6, v7) -> (* Cons *)                                │
00:03:23 #3045 [Verbose] > │         v0.[int v2] <- struct (v3, v4, v5, v6)                               │
00:03:23 #3046 [Verbose] > │         let v8 : uint64 = v2 + 1UL                                           │
00:03:23 #3047 [Verbose] > │         method5(v0, v7, v8)                                                  │
00:03:23 #3048 [Verbose] > │     | UH0_1 -> (* Nil *)                                                     │
00:03:23 #3049 [Verbose] > │         v2                                                                   │
00:03:23 #3050 [Verbose] > │ and method3 (v0 : UH0) : (struct ((int32 []) * int32 * int32 * US0) []) =    │
00:03:23 #3051 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:23 #3052 [Verbose] > │     let v2 : uint64 = method4(v0, v1)                                        │
00:03:23 #3053 [Verbose] > │     let v3 : (struct ((int32 []) * int32 * int32 * US0) []) =                │
00:03:23 #3054 [Verbose] > │ Array.zeroCreate<struct ((int32 []) * int32 * int32 * US0)>                  │
00:03:23 #3055 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:03:23 #3056 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:23 #3057 [Verbose] > │     let v5 : uint64 = method5(v3, v0, v4)                                    │
00:03:23 #3058 [Verbose] > │     v3                                                                       │
00:03:23 #3059 [Verbose] > │ and method6 (v0 : uint64, v1 : Mut1) : bool =                                │
00:03:23 #3060 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:03:23 #3061 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:03:23 #3062 [Verbose] > │     v3                                                                       │
00:03:23 #3063 [Verbose] > │ and method7 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : int32) : US0 =    │
00:03:23 #3064 [Verbose] > │     let v4 : bool = v3 >= v2                                                 │
00:03:23 #3065 [Verbose] > │     if v4 then                                                               │
00:03:23 #3066 [Verbose] > │         US0_0                                                                │
00:03:23 #3067 [Verbose] > │     else                                                                     │
00:03:23 #3068 [Verbose] > │         let v6 : int32 = v3 + v2                                             │
00:03:23 #3069 [Verbose] > │         let v7 : int32 = v6 / 2                                              │
00:03:23 #3070 [Verbose] > │         let v8 : int32 = v0.[int v7]                                         │
00:03:23 #3071 [Verbose] > │         let v9 : bool = v8 = v1                                              │
00:03:23 #3072 [Verbose] > │         if v9 then                                                           │
00:03:23 #3073 [Verbose] > │             US0_1(v7)                                                        │
00:03:23 #3074 [Verbose] > │         else                                                                 │
00:03:23 #3075 [Verbose] > │             let v11 : bool = v8 < v1                                         │
00:03:23 #3076 [Verbose] > │             if v11 then                                                      │
00:03:23 #3077 [Verbose] > │                 let v12 : int32 = v7 + 1                                     │
00:03:23 #3078 [Verbose] > │                 method7(v0, v1, v2, v12)                                     │
00:03:23 #3079 [Verbose] > │             else                                                             │
00:03:23 #3080 [Verbose] > │                 method7(v0, v1, v7, v3)                                      │
00:03:23 #3081 [Verbose] > │ and closure1 () struct (v0 : (int32 []), v1 : int32, v2 : int32) : US0 =     │
00:03:23 #3082 [Verbose] > │     let v3 : int32 = 0                                                       │
00:03:23 #3083 [Verbose] > │     method7(v0, v1, v2, v3)                                                  │
00:03:23 #3084 [Verbose] > │ and method8 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : int32) : US0 =    │
00:03:23 #3085 [Verbose] > │     let v4 : bool = v3 > v2                                                  │
00:03:23 #3086 [Verbose] > │     if v4 then                                                               │
00:03:23 #3087 [Verbose] > │         US0_0                                                                │
00:03:23 #3088 [Verbose] > │     else                                                                     │
00:03:23 #3089 [Verbose] > │         let v6 : int32 = v3 + v2                                             │
00:03:23 #3090 [Verbose] > │         let v7 : int32 = v6 / 2                                              │
00:03:23 #3091 [Verbose] > │         let v8 : int32 = v0.[int v7]                                         │
00:03:23 #3092 [Verbose] > │         let v9 : bool = v8 = v1                                              │
00:03:23 #3093 [Verbose] > │         if v9 then                                                           │
00:03:23 #3094 [Verbose] > │             US0_1(v7)                                                        │
00:03:23 #3095 [Verbose] > │         else                                                                 │
00:03:23 #3096 [Verbose] > │             let v11 : bool = v8 < v1                                         │
00:03:23 #3097 [Verbose] > │             if v11 then                                                      │
00:03:23 #3098 [Verbose] > │                 let v12 : int32 = v7 + 1                                     │
00:03:23 #3099 [Verbose] > │                 method8(v0, v1, v2, v12)                                     │
00:03:23 #3100 [Verbose] > │             else                                                             │
00:03:23 #3101 [Verbose] > │                 let v14 : int32 = v7 - 1                                     │
00:03:23 #3102 [Verbose] > │                 method8(v0, v1, v14, v3)                                     │
00:03:23 #3103 [Verbose] > │ and closure2 () struct (v0 : (int32 []), v1 : int32, v2 : int32) : US0 =     │
00:03:23 #3104 [Verbose] > │     let v3 : int32 = v2 - 1                                                  │
00:03:23 #3105 [Verbose] > │     let v4 : int32 = 0                                                       │
00:03:23 #3106 [Verbose] > │     method8(v0, v1, v3, v4)                                                  │
00:03:23 #3107 [Verbose] > │ and method9 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : int32) : US0 =    │
00:03:23 #3108 [Verbose] > │     let v4 : bool = v2 >= v3                                                 │
00:03:23 #3109 [Verbose] > │     if v4 then                                                               │
00:03:23 #3110 [Verbose] > │         US0_0                                                                │
00:03:23 #3111 [Verbose] > │     else                                                                     │
00:03:23 #3112 [Verbose] > │         let v6 : int32 = v2 + v3                                             │
00:03:23 #3113 [Verbose] > │         let v7 : int32 = v6 / 2                                              │
00:03:23 #3114 [Verbose] > │         let v8 : int32 = v0.[int v7]                                         │
00:03:23 #3115 [Verbose] > │         let v9 : bool = v8 = v1                                              │
00:03:23 #3116 [Verbose] > │         if v9 then                                                           │
00:03:23 #3117 [Verbose] > │             US0_1(v7)                                                        │
00:03:23 #3118 [Verbose] > │         else                                                                 │
00:03:23 #3119 [Verbose] > │             let v11 : bool = v8 < v1                                         │
00:03:23 #3120 [Verbose] > │             if v11 then                                                      │
00:03:23 #3121 [Verbose] > │                 let v12 : int32 = v7 + 1                                     │
00:03:23 #3122 [Verbose] > │                 method9(v0, v1, v12, v3)                                     │
00:03:23 #3123 [Verbose] > │             else                                                             │
00:03:23 #3124 [Verbose] > │                 method9(v0, v1, v2, v7)                                      │
00:03:23 #3125 [Verbose] > │ and closure3 () struct (v0 : (int32 []), v1 : int32, v2 : int32) : US0 =     │
00:03:23 #3126 [Verbose] > │     let v3 : int32 = 0                                                       │
00:03:23 #3127 [Verbose] > │     method9(v0, v1, v3, v2)                                                  │
00:03:23 #3128 [Verbose] > │ and method10 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : int32) : US0 =   │
00:03:23 #3129 [Verbose] > │     let v4 : bool = v2 > v3                                                  │
00:03:23 #3130 [Verbose] > │     if v4 then                                                               │
00:03:23 #3131 [Verbose] > │         US0_0                                                                │
00:03:23 #3132 [Verbose] > │     else                                                                     │
00:03:23 #3133 [Verbose] > │         let v6 : int32 = v2 + v3                                             │
00:03:23 #3134 [Verbose] > │         let v7 : int32 = v6 / 2                                              │
00:03:23 #3135 [Verbose] > │         let v8 : int32 = v0.[int v7]                                         │
00:03:23 #3136 [Verbose] > │         let v9 : bool = v8 = v1                                              │
00:03:23 #3137 [Verbose] > │         if v9 then                                                           │
00:03:23 #3138 [Verbose] > │             US0_1(v7)                                                        │
00:03:23 #3139 [Verbose] > │         else                                                                 │
00:03:23 #3140 [Verbose] > │             let v11 : bool = v8 < v1                                         │
00:03:23 #3141 [Verbose] > │             if v11 then                                                      │
00:03:23 #3142 [Verbose] > │                 let v12 : int32 = v7 + 1                                     │
00:03:23 #3143 [Verbose] > │                 method10(v0, v1, v12, v3)                                    │
00:03:23 #3144 [Verbose] > │             else                                                             │
00:03:23 #3145 [Verbose] > │                 let v14 : int32 = v7 - 1                                     │
00:03:23 #3146 [Verbose] > │                 method10(v0, v1, v2, v14)                                    │
00:03:23 #3147 [Verbose] > │ and closure4 () struct (v0 : (int32 []), v1 : int32, v2 : int32) : US0 =     │
00:03:23 #3148 [Verbose] > │     let v3 : int32 = v2 - 1                                                  │
00:03:23 #3149 [Verbose] > │     let v4 : int32 = 0                                                       │
00:03:23 #3150 [Verbose] > │     method10(v0, v1, v4, v3)                                                 │
00:03:23 #3151 [Verbose] > │ and method12 (v0 : UH1, v1 : uint64) : uint64 =                              │
00:03:23 #3152 [Verbose] > │     match v0 with                                                            │
00:03:23 #3153 [Verbose] > │     | UH1_0(v2, v3, v4, v5) -> (* Cons *)                                    │
00:03:23 #3154 [Verbose] > │         let v6 : uint64 = v1 + 1UL                                           │
00:03:23 #3155 [Verbose] > │         method12(v5, v6)                                                     │
00:03:23 #3156 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:03:23 #3157 [Verbose] > │         v1                                                                   │
00:03:23 #3158 [Verbose] > │ and method13 (v0 : (struct (int32 * string * (struct ((int32 []) * int32 *   │
00:03:23 #3159 [Verbose] > │ int32) -> US0)) []), v1 : UH1, v2 : uint64) : uint64 =                       │
00:03:23 #3160 [Verbose] > │     match v1 with                                                            │
00:03:23 #3161 [Verbose] > │     | UH1_0(v3, v4, v5, v6) -> (* Cons *)                                    │
00:03:23 #3162 [Verbose] > │         v0.[int v2] <- struct (v3, v4, v5)                                   │
00:03:23 #3163 [Verbose] > │         let v7 : uint64 = v2 + 1UL                                           │
00:03:23 #3164 [Verbose] > │         method13(v0, v6, v7)                                                 │
00:03:23 #3165 [Verbose] > │     | UH1_1 -> (* Nil *)                                                     │
00:03:23 #3166 [Verbose] > │         v2                                                                   │
00:03:23 #3167 [Verbose] > │ and method11 (v0 : UH1) : (struct (int32 * string * (struct ((int32 []) *    │
00:03:23 #3168 [Verbose] > │ int32 * int32) -> US0)) []) =                                                │
00:03:23 #3169 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:23 #3170 [Verbose] > │     let v2 : uint64 = method12(v0, v1)                                       │
00:03:23 #3171 [Verbose] > │     let v3 : (struct (int32 * string * (struct ((int32 []) * int32 * int32)  │
00:03:23 #3172 [Verbose] > │ -> US0)) []) = Array.zeroCreate<struct (int32 * string * (struct ((int32 []) │
00:03:23 #3173 [Verbose] > │ * int32 * int32) -> US0))> (System.Convert.ToInt32(v2))                      │
00:03:23 #3174 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:23 #3175 [Verbose] > │     let v5 : uint64 = method13(v3, v0, v4)                                   │
00:03:23 #3176 [Verbose] > │     v3                                                                       │
00:03:23 #3177 [Verbose] > │ and method14 (v0 : Mut0) : bool =                                            │
00:03:23 #3178 [Verbose] > │     let v1 : int32 = v0.l0                                                   │
00:03:23 #3179 [Verbose] > │     let v2 : bool = v1 < 8000001                                             │
00:03:23 #3180 [Verbose] > │     v2                                                                       │
00:03:23 #3181 [Verbose] > │ and closure5 (v0 : (int32 []), v1 : int32, v2 : int32, v3 : (struct ((int32  │
00:03:23 #3182 [Verbose] > │ []) * int32 * int32) -> US0)) (v4 : int32) : US0 =                           │
00:03:23 #3183 [Verbose] > │     v3 struct (v0, v1, v2)                                                   │
00:03:23 #3184 [Verbose] > │ and method15 (v0 : US0, v1 : (US0 []), v2 : uint64) : bool =                 │
00:03:23 #3185 [Verbose] > │     let v3 : uint64 = System.Convert.ToUInt64 v1.Length                      │
00:03:23 #3186 [Verbose] > │     let v4 : bool = v2 < v3                                                  │
00:03:23 #3187 [Verbose] > │     if v4 then                                                               │
00:03:23 #3188 [Verbose] > │         let v5 : US0 = v1.[int v2]                                           │
00:03:23 #3189 [Verbose] > │         let v9 : bool =                                                      │
00:03:23 #3190 [Verbose] > │             match v0, v5 with                                                │
00:03:23 #3191 [Verbose] > │             | US0_0, US0_0 -> (* None *)                                     │
00:03:23 #3192 [Verbose] > │                 true                                                         │
00:03:23 #3193 [Verbose] > │             | US0_1(v6), US0_1(v7) -> (* Some *)                             │
00:03:23 #3194 [Verbose] > │                 let v8 : bool = v6 = v7                                      │
00:03:23 #3195 [Verbose] > │                 v8                                                           │
00:03:23 #3196 [Verbose] > │             | _ ->                                                           │
00:03:23 #3197 [Verbose] > │                 false                                                        │
00:03:23 #3198 [Verbose] > │         if v9 then                                                           │
00:03:23 #3199 [Verbose] > │             let v10 : uint64 = v2 + 1UL                                      │
00:03:23 #3200 [Verbose] > │             method15(v0, v1, v10)                                            │
00:03:23 #3201 [Verbose] > │         else                                                                 │
00:03:23 #3202 [Verbose] > │             false                                                            │
00:03:23 #3203 [Verbose] > │     else                                                                     │
00:03:23 #3204 [Verbose] > │         true                                                                 │
00:03:23 #3205 [Verbose] > │ and method16 (v0 : uint64, v1 : Mut2) : bool =                               │
00:03:23 #3206 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:03:23 #3207 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:03:23 #3208 [Verbose] > │     v3                                                                       │
00:03:23 #3209 [Verbose] > │ and method17 (v0 : UH3, v1 : UH3) : UH3 =                                    │
00:03:23 #3210 [Verbose] > │     match v0 with                                                            │
00:03:23 #3211 [Verbose] > │     | UH3_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:23 #3212 [Verbose] > │         let v5 : UH3 = UH3_0(v2, v3, v1)                                     │
00:03:23 #3213 [Verbose] > │         method17(v4, v5)                                                     │
00:03:23 #3214 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:03:23 #3215 [Verbose] > │         v1                                                                   │
00:03:23 #3216 [Verbose] > │ and method19 (v0 : UH3, v1 : int32) : int32 =                                │
00:03:23 #3217 [Verbose] > │     match v0 with                                                            │
00:03:23 #3218 [Verbose] > │     | UH3_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:23 #3219 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:03:23 #3220 [Verbose] > │         method19(v4, v5)                                                     │
00:03:23 #3221 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:03:23 #3222 [Verbose] > │         v1                                                                   │
00:03:23 #3223 [Verbose] > │ and method20 (v0 : (struct (int64 * int64) []), v1 : UH3, v2 : int32) :      │
00:03:23 #3224 [Verbose] > │ int32 =                                                                      │
00:03:23 #3225 [Verbose] > │     match v1 with                                                            │
00:03:23 #3226 [Verbose] > │     | UH3_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:23 #3227 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:23 #3228 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:03:23 #3229 [Verbose] > │         method20(v0, v5, v6)                                                 │
00:03:23 #3230 [Verbose] > │     | UH3_1 -> (* Nil *)                                                     │
00:03:23 #3231 [Verbose] > │         v2                                                                   │
00:03:23 #3232 [Verbose] > │ and method18 (v0 : UH3) : (struct (int64 * int64) []) =                      │
00:03:23 #3233 [Verbose] > │     let v1 : int32 = 0                                                       │
00:03:23 #3234 [Verbose] > │     let v2 : int32 = method19(v0, v1)                                        │
00:03:23 #3235 [Verbose] > │     let v3 : (struct (int64 * int64) []) = Array.zeroCreate<struct (int64 *  │
00:03:23 #3236 [Verbose] > │ int64)> (v2)                                                                 │
00:03:23 #3237 [Verbose] > │     let v4 : int32 = 0                                                       │
00:03:23 #3238 [Verbose] > │     let v5 : int32 = method20(v3, v0, v4)                                    │
00:03:23 #3239 [Verbose] > │     v3                                                                       │
00:03:23 #3240 [Verbose] > │ and method21 (v0 : int32, v1 : Mut0) : bool =                                │
00:03:23 #3241 [Verbose] > │     let v2 : int32 = v1.l0                                                   │
00:03:23 #3242 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:03:23 #3243 [Verbose] > │     v3                                                                       │
00:03:23 #3244 [Verbose] > │ and closure6 () struct (v0 : int64, v1 : int64) : int64 =                    │
00:03:23 #3245 [Verbose] > │     v1                                                                       │
00:03:23 #3246 [Verbose] > │ and method23 (v0 : UH4, v1 : uint64) : uint64 =                              │
00:03:23 #3247 [Verbose] > │     match v0 with                                                            │
00:03:23 #3248 [Verbose] > │     | UH4_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:23 #3249 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:03:23 #3250 [Verbose] > │         method23(v4, v5)                                                     │
00:03:23 #3251 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:03:23 #3252 [Verbose] > │         v1                                                                   │
00:03:23 #3253 [Verbose] > │ and method24 (v0 : (struct (UH2 * US1) []), v1 : UH4, v2 : uint64) : uint64  │
00:03:23 #3254 [Verbose] > │ =                                                                            │
00:03:23 #3255 [Verbose] > │     match v1 with                                                            │
00:03:23 #3256 [Verbose] > │     | UH4_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:23 #3257 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:23 #3258 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:03:23 #3259 [Verbose] > │         method24(v0, v5, v6)                                                 │
00:03:23 #3260 [Verbose] > │     | UH4_1 -> (* Nil *)                                                     │
00:03:23 #3261 [Verbose] > │         v2                                                                   │
00:03:23 #3262 [Verbose] > │ and method22 (v0 : UH4) : (struct (UH2 * US1) []) =                          │
00:03:23 #3263 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:23 #3264 [Verbose] > │     let v2 : uint64 = method23(v0, v1)                                       │
00:03:23 #3265 [Verbose] > │     let v3 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 * US1)>  │
00:03:23 #3266 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:03:23 #3267 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:23 #3268 [Verbose] > │     let v5 : uint64 = method24(v3, v0, v4)                                   │
00:03:23 #3269 [Verbose] > │     v3                                                                       │
00:03:23 #3270 [Verbose] > │ and method26 (v0 : UH2, v1 : uint64) : uint64 =                              │
00:03:23 #3271 [Verbose] > │     match v0 with                                                            │
00:03:23 #3272 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:03:23 #3273 [Verbose] > │         let v4 : uint64 = v1 + 1UL                                           │
00:03:23 #3274 [Verbose] > │         method26(v3, v4)                                                     │
00:03:23 #3275 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:23 #3276 [Verbose] > │         v1                                                                   │
00:03:23 #3277 [Verbose] > │ and method27 (v0 : (string []), v1 : UH2, v2 : uint64) : uint64 =            │
00:03:23 #3278 [Verbose] > │     match v1 with                                                            │
00:03:23 #3279 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:03:23 #3280 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:03:23 #3281 [Verbose] > │         let v5 : uint64 = v2 + 1UL                                           │
00:03:23 #3282 [Verbose] > │         method27(v0, v4, v5)                                                 │
00:03:23 #3283 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:23 #3284 [Verbose] > │         v2                                                                   │
00:03:23 #3285 [Verbose] > │ and method25 (v0 : UH2) : (string []) =                                      │
00:03:23 #3286 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:23 #3287 [Verbose] > │     let v2 : uint64 = method26(v0, v1)                                       │
00:03:23 #3288 [Verbose] > │     let v3 : (string []) = Array.zeroCreate<string>                          │
00:03:23 #3289 [Verbose] > │ (System.Convert.ToInt32(v2))                                                 │
00:03:23 #3290 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:23 #3291 [Verbose] > │     let v5 : uint64 = method27(v3, v0, v4)                                   │
00:03:23 #3292 [Verbose] > │     v3                                                                       │
00:03:23 #3293 [Verbose] > │ and closure7 () (v0 : int64) : US2 =                                         │
00:03:23 #3294 [Verbose] > │     US2_1(v0)                                                                │
00:03:23 #3295 [Verbose] > │ and method28 (v0 : uint64, v1 : Mut3) : bool =                               │
00:03:23 #3296 [Verbose] > │     let v2 : uint64 = v1.l0                                                  │
00:03:23 #3297 [Verbose] > │     let v3 : bool = v2 < v0                                                  │
00:03:23 #3298 [Verbose] > │     v3                                                                       │
00:03:23 #3299 [Verbose] > │ and method29 (v0 : UH5, v1 : UH5) : UH5 =                                    │
00:03:23 #3300 [Verbose] > │     match v0 with                                                            │
00:03:23 #3301 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:23 #3302 [Verbose] > │         let v5 : UH5 = UH5_0(v2, v3, v1)                                     │
00:03:23 #3303 [Verbose] > │         method29(v4, v5)                                                     │
00:03:23 #3304 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:03:23 #3305 [Verbose] > │         v1                                                                   │
00:03:23 #3306 [Verbose] > │ and method31 (v0 : UH5, v1 : int32) : int32 =                                │
00:03:23 #3307 [Verbose] > │     match v0 with                                                            │
00:03:23 #3308 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:23 #3309 [Verbose] > │         let v5 : int32 = v1 + 1                                              │
00:03:23 #3310 [Verbose] > │         method31(v4, v5)                                                     │
00:03:23 #3311 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:03:23 #3312 [Verbose] > │         v1                                                                   │
00:03:23 #3313 [Verbose] > │ and method32 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : int32) :      │
00:03:23 #3314 [Verbose] > │ int32 =                                                                      │
00:03:23 #3315 [Verbose] > │     match v1 with                                                            │
00:03:23 #3316 [Verbose] > │     | UH5_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:23 #3317 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:23 #3318 [Verbose] > │         let v6 : int32 = v2 + 1                                              │
00:03:23 #3319 [Verbose] > │         method32(v0, v5, v6)                                                 │
00:03:23 #3320 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:03:23 #3321 [Verbose] > │         v2                                                                   │
00:03:23 #3322 [Verbose] > │ and method30 (v0 : UH5) : (struct (int32 * int64) []) =                      │
00:03:23 #3323 [Verbose] > │     let v1 : int32 = 0                                                       │
00:03:23 #3324 [Verbose] > │     let v2 : int32 = method31(v0, v1)                                        │
00:03:23 #3325 [Verbose] > │     let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 *  │
00:03:23 #3326 [Verbose] > │ int64)> (v2)                                                                 │
00:03:23 #3327 [Verbose] > │     let v4 : int32 = 0                                                       │
00:03:23 #3328 [Verbose] > │     let v5 : int32 = method32(v3, v0, v4)                                    │
00:03:23 #3329 [Verbose] > │     v3                                                                       │
00:03:23 #3330 [Verbose] > │ and method33 (v0 : UH2, v1 : UH6, v2 : int32) : struct (UH6 * int32) =       │
00:03:23 #3331 [Verbose] > │     match v0 with                                                            │
00:03:23 #3332 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:03:23 #3333 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:03:23 #3334 [Verbose] > │         let v6 : UH6 = UH6_0(v2, v3, v1)                                     │
00:03:23 #3335 [Verbose] > │         method33(v4, v6, v5)                                                 │
00:03:23 #3336 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:23 #3337 [Verbose] > │         struct (v1, v2)                                                      │
00:03:23 #3338 [Verbose] > │ and method34 (v0 : UH6, v1 : UH6) : UH6 =                                    │
00:03:23 #3339 [Verbose] > │     match v0 with                                                            │
00:03:23 #3340 [Verbose] > │     | UH6_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:23 #3341 [Verbose] > │         let v5 : UH6 = UH6_0(v2, v3, v1)                                     │
00:03:23 #3342 [Verbose] > │         method34(v4, v5)                                                     │
00:03:23 #3343 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:03:23 #3344 [Verbose] > │         v1                                                                   │
00:03:23 #3345 [Verbose] > │ and method35 (v0 : Map<int32, int64>, v1 : UH6, v2 : UH2) : UH2 =            │
00:03:23 #3346 [Verbose] > │     match v1 with                                                            │
00:03:23 #3347 [Verbose] > │     | UH6_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:23 #3348 [Verbose] > │         let v6 : UH2 = method35(v0, v5, v2)                                  │
00:03:23 #3349 [Verbose] > │         let v7 : int64 = v0.[v3]                                             │
00:03:23 #3350 [Verbose] > │         let v8 : int32 = int32 v7                                            │
00:03:23 #3351 [Verbose] > │         let v9 : string = v4.PadRight v8                                     │
00:03:23 #3352 [Verbose] > │         UH2_0(v9, v6)                                                        │
00:03:23 #3353 [Verbose] > │     | UH6_1 -> (* Nil *)                                                     │
00:03:23 #3354 [Verbose] > │         v2                                                                   │
00:03:23 #3355 [Verbose] > │ and method37 (v0 : UH2, v1 : int32) : int32 =                                │
00:03:23 #3356 [Verbose] > │     match v0 with                                                            │
00:03:23 #3357 [Verbose] > │     | UH2_0(v2, v3) -> (* Cons *)                                            │
00:03:23 #3358 [Verbose] > │         let v4 : int32 = v1 + 1                                              │
00:03:23 #3359 [Verbose] > │         method37(v3, v4)                                                     │
00:03:23 #3360 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:23 #3361 [Verbose] > │         v1                                                                   │
00:03:23 #3362 [Verbose] > │ and method38 (v0 : (string []), v1 : UH2, v2 : int32) : int32 =              │
00:03:23 #3363 [Verbose] > │     match v1 with                                                            │
00:03:23 #3364 [Verbose] > │     | UH2_0(v3, v4) -> (* Cons *)                                            │
00:03:23 #3365 [Verbose] > │         v0.[int v2] <- v3                                                    │
00:03:23 #3366 [Verbose] > │         let v5 : int32 = v2 + 1                                              │
00:03:23 #3367 [Verbose] > │         method38(v0, v4, v5)                                                 │
00:03:23 #3368 [Verbose] > │     | UH2_1 -> (* Nil *)                                                     │
00:03:23 #3369 [Verbose] > │         v2                                                                   │
00:03:23 #3370 [Verbose] > │ and method36 (v0 : UH2) : (string []) =                                      │
00:03:23 #3371 [Verbose] > │     let v1 : int32 = 0                                                       │
00:03:23 #3372 [Verbose] > │     let v2 : int32 = method37(v0, v1)                                        │
00:03:23 #3373 [Verbose] > │     let v3 : (string []) = Array.zeroCreate<string> (v2)                     │
00:03:23 #3374 [Verbose] > │     let v4 : int32 = 0                                                       │
00:03:23 #3375 [Verbose] > │     let v5 : int32 = method38(v3, v0, v4)                                    │
00:03:23 #3376 [Verbose] > │     v3                                                                       │
00:03:23 #3377 [Verbose] > │ and method40 (v0 : UH5, v1 : uint64) : uint64 =                              │
00:03:23 #3378 [Verbose] > │     match v0 with                                                            │
00:03:23 #3379 [Verbose] > │     | UH5_0(v2, v3, v4) -> (* Cons *)                                        │
00:03:23 #3380 [Verbose] > │         let v5 : uint64 = v1 + 1UL                                           │
00:03:23 #3381 [Verbose] > │         method40(v4, v5)                                                     │
00:03:23 #3382 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:03:23 #3383 [Verbose] > │         v1                                                                   │
00:03:23 #3384 [Verbose] > │ and method41 (v0 : (struct (int32 * int64) []), v1 : UH5, v2 : uint64) :     │
00:03:23 #3385 [Verbose] > │ uint64 =                                                                     │
00:03:23 #3386 [Verbose] > │     match v1 with                                                            │
00:03:23 #3387 [Verbose] > │     | UH5_0(v3, v4, v5) -> (* Cons *)                                        │
00:03:23 #3388 [Verbose] > │         v0.[int v2] <- struct (v3, v4)                                       │
00:03:23 #3389 [Verbose] > │         let v6 : uint64 = v2 + 1UL                                           │
00:03:23 #3390 [Verbose] > │         method41(v0, v5, v6)                                                 │
00:03:23 #3391 [Verbose] > │     | UH5_1 -> (* Nil *)                                                     │
00:03:23 #3392 [Verbose] > │         v2                                                                   │
00:03:23 #3393 [Verbose] > │ and method39 (v0 : UH5) : (struct (int32 * int64) []) =                      │
00:03:23 #3394 [Verbose] > │     let v1 : uint64 = 0UL                                                    │
00:03:23 #3395 [Verbose] > │     let v2 : uint64 = method40(v0, v1)                                       │
00:03:23 #3396 [Verbose] > │     let v3 : (struct (int32 * int64) []) = Array.zeroCreate<struct (int32 *  │
00:03:23 #3397 [Verbose] > │ int64)> (System.Convert.ToInt32(v2))                                         │
00:03:23 #3398 [Verbose] > │     let v4 : uint64 = 0UL                                                    │
00:03:23 #3399 [Verbose] > │     let v5 : uint64 = method41(v3, v0, v4)                                   │
00:03:23 #3400 [Verbose] > │     v3                                                                       │
00:03:23 #3401 [Verbose] > │ and closure8 () struct (v0 : int32, v1 : int64) : int64 =                    │
00:03:23 #3402 [Verbose] > │     v1                                                                       │
00:03:23 #3403 [Verbose] > │ and closure0 () () : unit =                                                  │
00:03:23 #3404 [Verbose] > │     let v0 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                           │
00:03:23 #3405 [Verbose] > │     let v1 : (int32 []) = method1(v0)                                        │
00:03:23 #3406 [Verbose] > │     let v2 : int32 = v1.Length                                               │
00:03:23 #3407 [Verbose] > │     let v3 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                           │
00:03:23 #3408 [Verbose] > │     let v4 : (int32 []) = method1(v3)                                        │
00:03:23 #3409 [Verbose] > │     let v5 : int32 = v4.Length                                               │
00:03:23 #3410 [Verbose] > │     let v6 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                           │
00:03:23 #3411 [Verbose] > │     let v7 : (int32 []) = method1(v6)                                        │
00:03:23 #3412 [Verbose] > │     let v8 : int32 = v7.Length                                               │
00:03:23 #3413 [Verbose] > │     let v9 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                           │
00:03:23 #3414 [Verbose] > │     let v10 : (int32 []) = method1(v9)                                       │
00:03:23 #3415 [Verbose] > │     let v11 : int32 = v10.Length                                             │
00:03:23 #3416 [Verbose] > │     let v12 : (int32 []) = Array.zeroCreate<int32> (100)                     │
00:03:23 #3417 [Verbose] > │     let v13 : Mut0 = {l0 = 0} : Mut0                                         │
00:03:23 #3418 [Verbose] > │     while method2(v13) do                                                    │
00:03:23 #3419 [Verbose] > │         let v15 : int32 = v13.l0                                             │
00:03:23 #3420 [Verbose] > │         let v16 : int32 = 1 + v15                                            │
00:03:23 #3421 [Verbose] > │         v12.[int v15] <- v16                                                 │
00:03:23 #3422 [Verbose] > │         let v17 : int32 = v15 + 1                                            │
00:03:23 #3423 [Verbose] > │         v13.l0 <- v17                                                        │
00:03:23 #3424 [Verbose] > │         ()                                                                   │
00:03:23 #3425 [Verbose] > │     let v18 : int32 = v12.Length                                             │
00:03:23 #3426 [Verbose] > │     let v19 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                          │
00:03:23 #3427 [Verbose] > │     let v20 : (int32 []) = method1(v19)                                      │
00:03:23 #3428 [Verbose] > │     let v21 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                          │
00:03:23 #3429 [Verbose] > │     let v22 : (int32 []) = method1(v21)                                      │
00:03:23 #3430 [Verbose] > │     let v23 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                          │
00:03:23 #3431 [Verbose] > │     let v24 : (int32 []) = method1(v23)                                      │
00:03:23 #3432 [Verbose] > │     let v25 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                          │
00:03:23 #3433 [Verbose] > │     let v26 : (int32 []) = method1(v25)                                      │
00:03:23 #3434 [Verbose] > │     let v27 : (int32 []) = Array.zeroCreate<int32> (100)                     │
00:03:23 #3435 [Verbose] > │     let v28 : Mut0 = {l0 = 0} : Mut0                                         │
00:03:23 #3436 [Verbose] > │     while method2(v28) do                                                    │
00:03:23 #3437 [Verbose] > │         let v30 : int32 = v28.l0                                             │
00:03:23 #3438 [Verbose] > │         let v31 : int32 = 1 + v30                                            │
00:03:23 #3439 [Verbose] > │         v27.[int v30] <- v31                                                 │
00:03:23 #3440 [Verbose] > │         let v32 : int32 = v30 + 1                                            │
00:03:23 #3441 [Verbose] > │         v28.l0 <- v32                                                        │
00:03:23 #3442 [Verbose] > │         ()                                                                   │
00:03:23 #3443 [Verbose] > │     let v33 : (unit -> unit) = closure0()                                    │
00:03:23 #3444 [Verbose] > │     let v34 : string = nameof v33                                            │
00:03:23 #3445 [Verbose] > │     let v35 : string = ""                                                    │
00:03:23 #3446 [Verbose] > │     System.Console.WriteLine v35                                             │
00:03:23 #3447 [Verbose] > │     System.Console.WriteLine v35                                             │
00:03:23 #3448 [Verbose] > │     let v36 : string = $"Test: {v34}"                                        │
00:03:23 #3449 [Verbose] > │     System.Console.WriteLine v36                                             │
00:03:23 #3450 [Verbose] > │     let v37 : int32 = 6                                                      │
00:03:23 #3451 [Verbose] > │     let v38 : int32 = 3                                                      │
00:03:23 #3452 [Verbose] > │     let v39 : US0 = US0_1(v38)                                               │
00:03:23 #3453 [Verbose] > │     let v40 : int32 = 1                                                      │
00:03:23 #3454 [Verbose] > │     let v41 : int32 = 0                                                      │
00:03:23 #3455 [Verbose] > │     let v42 : US0 = US0_1(v41)                                               │
00:03:23 #3456 [Verbose] > │     let v43 : int32 = 11                                                     │
00:03:23 #3457 [Verbose] > │     let v44 : int32 = 6                                                      │
00:03:23 #3458 [Verbose] > │     let v45 : US0 = US0_1(v44)                                               │
00:03:23 #3459 [Verbose] > │     let v46 : int32 = 12                                                     │
00:03:23 #3460 [Verbose] > │     let v47 : US0 = US0_0                                                    │
00:03:23 #3461 [Verbose] > │     let v48 : int32 = 60                                                     │
00:03:23 #3462 [Verbose] > │     let v49 : int32 = 59                                                     │
00:03:23 #3463 [Verbose] > │     let v50 : US0 = US0_1(v49)                                               │
00:03:23 #3464 [Verbose] > │     let v51 : int32 = 6                                                      │
00:03:23 #3465 [Verbose] > │     let v52 : int32 = 7                                                      │
00:03:23 #3466 [Verbose] > │     let v53 : int32 = 3                                                      │
00:03:23 #3467 [Verbose] > │     let v54 : US0 = US0_1(v53)                                               │
00:03:23 #3468 [Verbose] > │     let v55 : int32 = 1                                                      │
00:03:23 #3469 [Verbose] > │     let v56 : int32 = 7                                                      │
00:03:23 #3470 [Verbose] > │     let v57 : int32 = 0                                                      │
00:03:23 #3471 [Verbose] > │     let v58 : US0 = US0_1(v57)                                               │
00:03:23 #3472 [Verbose] > │     let v59 : int32 = 11                                                     │
00:03:23 #3473 [Verbose] > │     let v60 : int32 = 7                                                      │
00:03:23 #3474 [Verbose] > │     let v61 : int32 = 6                                                      │
00:03:23 #3475 [Verbose] > │     let v62 : US0 = US0_1(v61)                                               │
00:03:23 #3476 [Verbose] > │     let v63 : int32 = 12                                                     │
00:03:23 #3477 [Verbose] > │     let v64 : int32 = 7                                                      │
00:03:23 #3478 [Verbose] > │     let v65 : US0 = US0_0                                                    │
00:03:23 #3479 [Verbose] > │     let v66 : int32 = 60                                                     │
00:03:23 #3480 [Verbose] > │     let v67 : int32 = 100                                                    │
00:03:23 #3481 [Verbose] > │     let v68 : int32 = 59                                                     │
00:03:23 #3482 [Verbose] > │     let v69 : US0 = US0_1(v68)                                               │
00:03:23 #3483 [Verbose] > │     let v70 : UH0 = UH0_1                                                    │
00:03:23 #3484 [Verbose] > │     let v71 : UH0 = UH0_0(v27, v66, v67, v69, v70)                           │
00:03:23 #3485 [Verbose] > │     let v72 : UH0 = UH0_0(v26, v63, v64, v65, v71)                           │
00:03:23 #3486 [Verbose] > │     let v73 : UH0 = UH0_0(v24, v59, v60, v62, v72)                           │
00:03:23 #3487 [Verbose] > │     let v74 : UH0 = UH0_0(v22, v55, v56, v58, v73)                           │
00:03:23 #3488 [Verbose] > │     let v75 : UH0 = UH0_0(v20, v51, v52, v54, v74)                           │
00:03:23 #3489 [Verbose] > │     let v76 : UH0 = UH0_0(v12, v48, v18, v50, v75)                           │
00:03:23 #3490 [Verbose] > │     let v77 : UH0 = UH0_0(v10, v46, v11, v47, v76)                           │
00:03:23 #3491 [Verbose] > │     let v78 : UH0 = UH0_0(v7, v43, v8, v45, v77)                             │
00:03:23 #3492 [Verbose] > │     let v79 : UH0 = UH0_0(v4, v40, v5, v42, v78)                             │
00:03:23 #3493 [Verbose] > │     let v80 : UH0 = UH0_0(v1, v37, v2, v39, v79)                             │
00:03:23 #3494 [Verbose] > │     let v81 : (struct ((int32 []) * int32 * int32 * US0) []) = method3(v80)  │
00:03:23 #3495 [Verbose] > │     let v82 : uint64 = System.Convert.ToUInt64 v81.Length                    │
00:03:23 #3496 [Verbose] > │     let v83 : (struct (string * string * string * (int64 [])) []) =          │
00:03:23 #3497 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))>             │
00:03:23 #3498 [Verbose] > │ (System.Convert.ToInt32(v82))                                                │
00:03:23 #3499 [Verbose] > │     let v84 : Mut1 = {l0 = 0UL} : Mut1                                       │
00:03:23 #3500 [Verbose] > │     while method6(v82, v84) do                                               │
00:03:23 #3501 [Verbose] > │         let v86 : uint64 = v84.l0                                            │
00:03:23 #3502 [Verbose] > │         let struct (v87 : (int32 []), v88 : int32, v89 : int32, v90 : US0) = │
00:03:23 #3503 [Verbose] > │ v81.[int v86]                                                                │
00:03:23 #3504 [Verbose] > │         let v91 : string = $"%A{struct (v87, v88, v89)}"                     │
00:03:23 #3505 [Verbose] > │         System.Console.WriteLine v35                                         │
00:03:23 #3506 [Verbose] > │         let v92 : string = $"Solution: {v91}  "                              │
00:03:23 #3507 [Verbose] > │         System.Console.WriteLine v92                                         │
00:03:23 #3508 [Verbose] > │         let v93 : int32 = 0                                                  │
00:03:23 #3509 [Verbose] > │         let v94 : string = "semi_open_1"                                     │
00:03:23 #3510 [Verbose] > │         let v95 : (struct ((int32 []) * int32 * int32) -> US0) = closure1()  │
00:03:23 #3511 [Verbose] > │         let v96 : int32 = 1                                                  │
00:03:23 #3512 [Verbose] > │         let v97 : string = "closed_1"                                        │
00:03:23 #3513 [Verbose] > │         let v98 : (struct ((int32 []) * int32 * int32) -> US0) = closure2()  │
00:03:23 #3514 [Verbose] > │         let v99 : int32 = 2                                                  │
00:03:23 #3515 [Verbose] > │         let v100 : string = "semi_open_2"                                    │
00:03:23 #3516 [Verbose] > │         let v101 : (struct ((int32 []) * int32 * int32) -> US0) = closure3() │
00:03:23 #3517 [Verbose] > │         let v102 : int32 = 3                                                 │
00:03:23 #3518 [Verbose] > │         let v103 : string = "closed_2"                                       │
00:03:23 #3519 [Verbose] > │         let v104 : (struct ((int32 []) * int32 * int32) -> US0) = closure4() │
00:03:23 #3520 [Verbose] > │         let v105 : UH1 = UH1_1                                               │
00:03:23 #3521 [Verbose] > │         let v106 : UH1 = UH1_0(v102, v103, v104, v105)                       │
00:03:23 #3522 [Verbose] > │         let v107 : UH1 = UH1_0(v99, v100, v101, v106)                        │
00:03:23 #3523 [Verbose] > │         let v108 : UH1 = UH1_0(v96, v97, v98, v107)                          │
00:03:23 #3524 [Verbose] > │         let v109 : UH1 = UH1_0(v93, v94, v95, v108)                          │
00:03:23 #3525 [Verbose] > │         let v110 : (struct (int32 * string * (struct ((int32 []) * int32 *   │
00:03:23 #3526 [Verbose] > │ int32) -> US0)) []) = method11(v109)                                         │
00:03:23 #3527 [Verbose] > │         let v111 : uint64 = System.Convert.ToUInt64 v110.Length              │
00:03:23 #3528 [Verbose] > │         let v112 : (struct (US0 * int64) []) = Array.zeroCreate<struct (US0  │
00:03:23 #3529 [Verbose] > │ * int64)> (System.Convert.ToInt32(v111))                                     │
00:03:23 #3530 [Verbose] > │         let v113 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #3531 [Verbose] > │         while method6(v111, v113) do                                         │
00:03:23 #3532 [Verbose] > │             let v115 : uint64 = v113.l0                                      │
00:03:23 #3533 [Verbose] > │             let struct (v116 : int32, v117 : string, v118 : (struct ((int32  │
00:03:23 #3534 [Verbose] > │ []) * int32 * int32) -> US0)) = v110.[int v115]                              │
00:03:23 #3535 [Verbose] > │             let mutable result = None                                        │
00:03:23 #3536 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:23 #3537 [Verbose] > │             #if !WASM                                                        │
00:03:23 #3538 [Verbose] > │             ()                                                               │
00:03:23 #3539 [Verbose] > │             #else                                                            │
00:03:23 #3540 [Verbose] > │             ()                                                               │
00:03:23 #3541 [Verbose] > │             #endif                                                           │
00:03:23 #3542 [Verbose] > │             #else                                                            │
00:03:23 #3543 [Verbose] > │             System.GC.Collect ()                                             │
00:03:23 #3544 [Verbose] > │             ()                                                               │
00:03:23 #3545 [Verbose] > │             #endif                                                           │
00:03:23 #3546 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:23 #3547 [Verbose] > │             result |> Option.get                                             │
00:03:23 #3548 [Verbose] > │             let v119 : (unit -> System.Diagnostics.Stopwatch) =              │
00:03:23 #3549 [Verbose] > │ System.Diagnostics.Stopwatch                                                 │
00:03:23 #3550 [Verbose] > │             let v120 : System.Diagnostics.Stopwatch = v119 ()                │
00:03:23 #3551 [Verbose] > │             v120.Start ()                                                    │
00:03:23 #3552 [Verbose] > │             let v121 : int64 = v120.ElapsedMilliseconds                      │
00:03:23 #3553 [Verbose] > │             let v122 : (int32 []) = Array.zeroCreate<int32> (8000001)        │
00:03:23 #3554 [Verbose] > │             let v123 : Mut0 = {l0 = 0} : Mut0                                │
00:03:23 #3555 [Verbose] > │             while method14(v123) do                                          │
00:03:23 #3556 [Verbose] > │                 let v125 : int32 = v123.l0                                   │
00:03:23 #3557 [Verbose] > │                 v122.[int v125] <- v125                                      │
00:03:23 #3558 [Verbose] > │                 let v126 : int32 = v125 + 1                                  │
00:03:23 #3559 [Verbose] > │                 v123.l0 <- v126                                              │
00:03:23 #3560 [Verbose] > │                 ()                                                           │
00:03:23 #3561 [Verbose] > │             let v127 : (int32 -> US0) = closure5(v87, v88, v89, v118)        │
00:03:23 #3562 [Verbose] > │             let v128 : (US0 []) = v122 |> Array.Parallel.map v127            │
00:03:23 #3563 [Verbose] > │             let v129 : int32 = v128.Length                                   │
00:03:23 #3564 [Verbose] > │             let v130 : int32 = v129 - 1                                      │
00:03:23 #3565 [Verbose] > │             let v131 : US0 = v128.[int v130]                                 │
00:03:23 #3566 [Verbose] > │             let v132 : int64 = v120.ElapsedMilliseconds                      │
00:03:23 #3567 [Verbose] > │             let v133 : int64 = v132 - v121                                   │
00:03:23 #3568 [Verbose] > │             let v134 : string = $"Test case {v116 + 1}. {v117}. Time: {v133} │
00:03:23 #3569 [Verbose] > │ "                                                                            │
00:03:23 #3570 [Verbose] > │             System.Console.WriteLine v134                                    │
00:03:23 #3571 [Verbose] > │             v112.[int v115] <- struct (v131, v133)                           │
00:03:23 #3572 [Verbose] > │             let v135 : uint64 = v115 + 1UL                                   │
00:03:23 #3573 [Verbose] > │             v113.l0 <- v135                                                  │
00:03:23 #3574 [Verbose] > │             ()                                                               │
00:03:23 #3575 [Verbose] > │         let v136 : uint64 = System.Convert.ToUInt64 v112.Length              │
00:03:23 #3576 [Verbose] > │         let v137 : (US0 []) = Array.zeroCreate<US0>                          │
00:03:23 #3577 [Verbose] > │ (System.Convert.ToInt32(v136))                                               │
00:03:23 #3578 [Verbose] > │         let v138 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #3579 [Verbose] > │         while method6(v136, v138) do                                         │
00:03:23 #3580 [Verbose] > │             let v140 : uint64 = v138.l0                                      │
00:03:23 #3581 [Verbose] > │             let struct (v141 : US0, v142 : int64) = v112.[int v140]          │
00:03:23 #3582 [Verbose] > │             v137.[int v140] <- v141                                          │
00:03:23 #3583 [Verbose] > │             let v143 : uint64 = v140 + 1UL                                   │
00:03:23 #3584 [Verbose] > │             v138.l0 <- v143                                                  │
00:03:23 #3585 [Verbose] > │             ()                                                               │
00:03:23 #3586 [Verbose] > │         let v144 : uint64 = System.Convert.ToUInt64 v137.Length              │
00:03:23 #3587 [Verbose] > │         let v145 : bool = v144 <= 1UL                                        │
00:03:23 #3588 [Verbose] > │         if v145 then                                                         │
00:03:23 #3589 [Verbose] > │             ()                                                               │
00:03:23 #3590 [Verbose] > │         else                                                                 │
00:03:23 #3591 [Verbose] > │             let v146 : US0 = v137.[int 0UL]                                  │
00:03:23 #3592 [Verbose] > │             let v147 : uint64 = 0UL                                          │
00:03:23 #3593 [Verbose] > │             let v148 : bool = method15(v146, v137, v147)                     │
00:03:23 #3594 [Verbose] > │             if v148 then                                                     │
00:03:23 #3595 [Verbose] > │                 ()                                                           │
00:03:23 #3596 [Verbose] > │             else                                                             │
00:03:23 #3597 [Verbose] > │                 let v149 : string = $"Challenge error: {v137}"               │
00:03:23 #3598 [Verbose] > │                 failwith<unit> v149                                          │
00:03:23 #3599 [Verbose] > │         let v150 : string = $"%A{v90}"                                       │
00:03:23 #3600 [Verbose] > │         let v151 : (US0 []) = Array.zeroCreate<US0>                          │
00:03:23 #3601 [Verbose] > │ (System.Convert.ToInt32(v136))                                               │
00:03:23 #3602 [Verbose] > │         let v152 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #3603 [Verbose] > │         while method6(v136, v152) do                                         │
00:03:23 #3604 [Verbose] > │             let v154 : uint64 = v152.l0                                      │
00:03:23 #3605 [Verbose] > │             let struct (v155 : US0, v156 : int64) = v112.[int v154]          │
00:03:23 #3606 [Verbose] > │             v151.[int v154] <- v155                                          │
00:03:23 #3607 [Verbose] > │             let v157 : uint64 = v154 + 1UL                                   │
00:03:23 #3608 [Verbose] > │             v152.l0 <- v157                                                  │
00:03:23 #3609 [Verbose] > │             ()                                                               │
00:03:23 #3610 [Verbose] > │         let v158 : US0 = v151.[int 0UL]                                      │
00:03:23 #3611 [Verbose] > │         let v159 : string = $"%A{v158}"                                      │
00:03:23 #3612 [Verbose] > │         let v160 : (int64 []) = Array.zeroCreate<int64>                      │
00:03:23 #3613 [Verbose] > │ (System.Convert.ToInt32(v136))                                               │
00:03:23 #3614 [Verbose] > │         let v161 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #3615 [Verbose] > │         while method6(v136, v161) do                                         │
00:03:23 #3616 [Verbose] > │             let v163 : uint64 = v161.l0                                      │
00:03:23 #3617 [Verbose] > │             let struct (v164 : US0, v165 : int64) = v112.[int v163]          │
00:03:23 #3618 [Verbose] > │             v160.[int v163] <- v165                                          │
00:03:23 #3619 [Verbose] > │             let v166 : uint64 = v163 + 1UL                                   │
00:03:23 #3620 [Verbose] > │             v161.l0 <- v166                                                  │
00:03:23 #3621 [Verbose] > │             ()                                                               │
00:03:23 #3622 [Verbose] > │         v83.[int v86] <- struct (v150, v91, v159, v160)                      │
00:03:23 #3623 [Verbose] > │         let v167 : uint64 = v86 + 1UL                                        │
00:03:23 #3624 [Verbose] > │         v84.l0 <- v167                                                       │
00:03:23 #3625 [Verbose] > │         ()                                                                   │
00:03:23 #3626 [Verbose] > │     let v168 : uint64 = System.Convert.ToUInt64 v83.Length                   │
00:03:23 #3627 [Verbose] > │     let v169 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 *      │
00:03:23 #3628 [Verbose] > │ US1)> (System.Convert.ToInt32(v168))                                         │
00:03:23 #3629 [Verbose] > │     let v170 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3630 [Verbose] > │     while method6(v168, v170) do                                             │
00:03:23 #3631 [Verbose] > │         let v172 : uint64 = v170.l0                                          │
00:03:23 #3632 [Verbose] > │         let struct (v173 : string, v174 : string, v175 : string, v176 :      │
00:03:23 #3633 [Verbose] > │ (int64 [])) = v83.[int v172]                                                 │
00:03:23 #3634 [Verbose] > │         let v177 : uint64 = System.Convert.ToUInt64 v176.Length              │
00:03:23 #3635 [Verbose] > │         let v178 : UH3 = UH3_1                                               │
00:03:23 #3636 [Verbose] > │         let v179 : Mut2 = {l0 = 0UL; l1 = v178; l2 = 0L} : Mut2              │
00:03:23 #3637 [Verbose] > │         while method16(v177, v179) do                                        │
00:03:23 #3638 [Verbose] > │             let v181 : uint64 = v179.l0                                      │
00:03:23 #3639 [Verbose] > │             let struct (v182 : UH3, v183 : int64) = v179.l1, v179.l2         │
00:03:23 #3640 [Verbose] > │             let v184 : int64 = v176.[int v181]                               │
00:03:23 #3641 [Verbose] > │             let v185 : int64 = v183 + 1L                                     │
00:03:23 #3642 [Verbose] > │             let v186 : uint64 = v181 + 1UL                                   │
00:03:23 #3643 [Verbose] > │             let v187 : UH3 = UH3_0(v183, v184, v182)                         │
00:03:23 #3644 [Verbose] > │             v179.l0 <- v186                                                  │
00:03:23 #3645 [Verbose] > │             v179.l1 <- v187                                                  │
00:03:23 #3646 [Verbose] > │             v179.l2 <- v185                                                  │
00:03:23 #3647 [Verbose] > │             ()                                                               │
00:03:23 #3648 [Verbose] > │         let struct (v188 : UH3, v189 : int64) = v179.l1, v179.l2             │
00:03:23 #3649 [Verbose] > │         let v190 : UH3 = UH3_1                                               │
00:03:23 #3650 [Verbose] > │         let v191 : UH3 = method17(v188, v190)                                │
00:03:23 #3651 [Verbose] > │         let v192 : (struct (int64 * int64) []) = method18(v191)              │
00:03:23 #3652 [Verbose] > │         let v193 : int32 = v192.Length                                       │
00:03:23 #3653 [Verbose] > │         let v194 : (struct (int64 * int64) []) = Array.zeroCreate<struct     │
00:03:23 #3654 [Verbose] > │ (int64 * int64)> (v193)                                                      │
00:03:23 #3655 [Verbose] > │         let v195 : Mut0 = {l0 = 0} : Mut0                                    │
00:03:23 #3656 [Verbose] > │         while method21(v193, v195) do                                        │
00:03:23 #3657 [Verbose] > │             let v197 : int32 = v195.l0                                       │
00:03:23 #3658 [Verbose] > │             let struct (v198 : int64, v199 : int64) = v192.[int v197]        │
00:03:23 #3659 [Verbose] > │             let v200 : int64 = v198 + 1L                                     │
00:03:23 #3660 [Verbose] > │             v194.[int v197] <- struct (v200, v199)                           │
00:03:23 #3661 [Verbose] > │             let v201 : int32 = v197 + 1                                      │
00:03:23 #3662 [Verbose] > │             v195.l0 <- v201                                                  │
00:03:23 #3663 [Verbose] > │             ()                                                               │
00:03:23 #3664 [Verbose] > │         let v202 : (struct (int64 * int64) -> int64) = closure6()            │
00:03:23 #3665 [Verbose] > │         let v203 : (struct (int64 * int64) []) = v194 |> Array.sortBy v202   │
00:03:23 #3666 [Verbose] > │         let struct (v204 : int64, v205 : int64) = v203.[int 0]               │
00:03:23 #3667 [Verbose] > │         let v206 : string = $"%A{struct (v204, v205)}"                       │
00:03:23 #3668 [Verbose] > │         let v207 : bool = v173 = v175                                        │
00:03:23 #3669 [Verbose] > │         let v212 : US1 =                                                     │
00:03:23 #3670 [Verbose] > │             if v207 then                                                     │
00:03:23 #3671 [Verbose] > │                 let v208 : System.ConsoleColor =                             │
00:03:23 #3672 [Verbose] > │ System.ConsoleColor.DarkGreen                                                │
00:03:23 #3673 [Verbose] > │                 US1_1(v208)                                                  │
00:03:23 #3674 [Verbose] > │             else                                                             │
00:03:23 #3675 [Verbose] > │                 let v210 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:03:23 #3676 [Verbose] > │                 US1_1(v210)                                                  │
00:03:23 #3677 [Verbose] > │         let v213 : UH2 = UH2_1                                               │
00:03:23 #3678 [Verbose] > │         let v214 : UH2 = UH2_0(v206, v213)                                   │
00:03:23 #3679 [Verbose] > │         let v215 : UH2 = UH2_0(v175, v214)                                   │
00:03:23 #3680 [Verbose] > │         let v216 : UH2 = UH2_0(v173, v215)                                   │
00:03:23 #3681 [Verbose] > │         let v217 : UH2 = UH2_0(v174, v216)                                   │
00:03:23 #3682 [Verbose] > │         v169.[int v172] <- struct (v217, v212)                               │
00:03:23 #3683 [Verbose] > │         let v218 : uint64 = v172 + 1UL                                       │
00:03:23 #3684 [Verbose] > │         v170.l0 <- v218                                                      │
00:03:23 #3685 [Verbose] > │         ()                                                                   │
00:03:23 #3686 [Verbose] > │     let v219 : string = "Input"                                              │
00:03:23 #3687 [Verbose] > │     let v220 : string = "Expected"                                           │
00:03:23 #3688 [Verbose] > │     let v221 : string = "Result"                                             │
00:03:23 #3689 [Verbose] > │     let v222 : string = "Best"                                               │
00:03:23 #3690 [Verbose] > │     let v223 : UH2 = UH2_1                                                   │
00:03:23 #3691 [Verbose] > │     let v224 : UH2 = UH2_0(v222, v223)                                       │
00:03:23 #3692 [Verbose] > │     let v225 : UH2 = UH2_0(v221, v224)                                       │
00:03:23 #3693 [Verbose] > │     let v226 : UH2 = UH2_0(v220, v225)                                       │
00:03:23 #3694 [Verbose] > │     let v227 : UH2 = UH2_0(v219, v226)                                       │
00:03:23 #3695 [Verbose] > │     let v228 : US1 = US1_0                                                   │
00:03:23 #3696 [Verbose] > │     let v229 : string = "---"                                                │
00:03:23 #3697 [Verbose] > │     let v230 : UH2 = UH2_1                                                   │
00:03:23 #3698 [Verbose] > │     let v231 : UH2 = UH2_0(v229, v230)                                       │
00:03:23 #3699 [Verbose] > │     let v232 : UH2 = UH2_0(v229, v231)                                       │
00:03:23 #3700 [Verbose] > │     let v233 : UH2 = UH2_0(v229, v232)                                       │
00:03:23 #3701 [Verbose] > │     let v234 : UH2 = UH2_0(v229, v233)                                       │
00:03:23 #3702 [Verbose] > │     let v235 : US1 = US1_0                                                   │
00:03:23 #3703 [Verbose] > │     let v236 : UH4 = UH4_1                                                   │
00:03:23 #3704 [Verbose] > │     let v237 : UH4 = UH4_0(v234, v235, v236)                                 │
00:03:23 #3705 [Verbose] > │     let v238 : UH4 = UH4_0(v227, v228, v237)                                 │
00:03:23 #3706 [Verbose] > │     let v239 : (struct (UH2 * US1) []) = method22(v238)                      │
00:03:23 #3707 [Verbose] > │     let v240 : uint64 = System.Convert.ToUInt64 v239.Length                  │
00:03:23 #3708 [Verbose] > │     let v241 : uint64 = System.Convert.ToUInt64 v169.Length                  │
00:03:23 #3709 [Verbose] > │     let v242 : uint64 = v240 + v241                                          │
00:03:23 #3710 [Verbose] > │     let v243 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 *      │
00:03:23 #3711 [Verbose] > │ US1)> (System.Convert.ToInt32(v242))                                         │
00:03:23 #3712 [Verbose] > │     let v244 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3713 [Verbose] > │     while method6(v242, v244) do                                             │
00:03:23 #3714 [Verbose] > │         let v246 : uint64 = v244.l0                                          │
00:03:23 #3715 [Verbose] > │         let v247 : bool = v246 < v240                                        │
00:03:23 #3716 [Verbose] > │         let struct (v253 : UH2, v254 : US1) =                                │
00:03:23 #3717 [Verbose] > │             if v247 then                                                     │
00:03:23 #3718 [Verbose] > │                 let struct (v248 : UH2, v249 : US1) = v239.[int v246]        │
00:03:23 #3719 [Verbose] > │                 struct (v248, v249)                                          │
00:03:23 #3720 [Verbose] > │             else                                                             │
00:03:23 #3721 [Verbose] > │                 let v250 : uint64 = v246 - v240                              │
00:03:23 #3722 [Verbose] > │                 let struct (v251 : UH2, v252 : US1) = v169.[int v250]        │
00:03:23 #3723 [Verbose] > │                 struct (v251, v252)                                          │
00:03:23 #3724 [Verbose] > │         v243.[int v246] <- struct (v253, v254)                               │
00:03:23 #3725 [Verbose] > │         let v255 : uint64 = v246 + 1UL                                       │
00:03:23 #3726 [Verbose] > │         v244.l0 <- v255                                                      │
00:03:23 #3727 [Verbose] > │         ()                                                                   │
00:03:23 #3728 [Verbose] > │     let v256 : uint64 = System.Convert.ToUInt64 v243.Length                  │
00:03:23 #3729 [Verbose] > │     let v257 : ((string []) []) = Array.zeroCreate<(string [])>              │
00:03:23 #3730 [Verbose] > │ (System.Convert.ToInt32(v256))                                               │
00:03:23 #3731 [Verbose] > │     let v258 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3732 [Verbose] > │     while method6(v256, v258) do                                             │
00:03:23 #3733 [Verbose] > │         let v260 : uint64 = v258.l0                                          │
00:03:23 #3734 [Verbose] > │         let struct (v261 : UH2, v262 : US1) = v243.[int v260]                │
00:03:23 #3735 [Verbose] > │         let v263 : (string []) = method25(v261)                              │
00:03:23 #3736 [Verbose] > │         v257.[int v260] <- v263                                              │
00:03:23 #3737 [Verbose] > │         let v264 : uint64 = v260 + 1UL                                       │
00:03:23 #3738 [Verbose] > │         v258.l0 <- v264                                                      │
00:03:23 #3739 [Verbose] > │         ()                                                                   │
00:03:23 #3740 [Verbose] > │     let v265 : ((string []) []) = v257 |> Array.transpose                    │
00:03:23 #3741 [Verbose] > │     let v266 : uint64 = System.Convert.ToUInt64 v265.Length                  │
00:03:23 #3742 [Verbose] > │     let v267 : (int64 []) = Array.zeroCreate<int64>                          │
00:03:23 #3743 [Verbose] > │ (System.Convert.ToInt32(v266))                                               │
00:03:23 #3744 [Verbose] > │     let v268 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3745 [Verbose] > │     while method6(v266, v268) do                                             │
00:03:23 #3746 [Verbose] > │         let v270 : uint64 = v268.l0                                          │
00:03:23 #3747 [Verbose] > │         let v271 : (string []) = v265.[int v270]                             │
00:03:23 #3748 [Verbose] > │         let v272 : uint64 = System.Convert.ToUInt64 v271.Length              │
00:03:23 #3749 [Verbose] > │         let v273 : (int64 []) = Array.zeroCreate<int64>                      │
00:03:23 #3750 [Verbose] > │ (System.Convert.ToInt32(v272))                                               │
00:03:23 #3751 [Verbose] > │         let v274 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #3752 [Verbose] > │         while method6(v272, v274) do                                         │
00:03:23 #3753 [Verbose] > │             let v276 : uint64 = v274.l0                                      │
00:03:23 #3754 [Verbose] > │             let v277 : string = v271.[int v276]                              │
00:03:23 #3755 [Verbose] > │             let v278 : int64 = System.Convert.ToInt64 v277.Length            │
00:03:23 #3756 [Verbose] > │             v273.[int v276] <- v278                                          │
00:03:23 #3757 [Verbose] > │             let v279 : uint64 = v276 + 1UL                                   │
00:03:23 #3758 [Verbose] > │             v274.l0 <- v279                                                  │
00:03:23 #3759 [Verbose] > │             ()                                                               │
00:03:23 #3760 [Verbose] > │         let v280 : (int64 []) = v273 |> Array.sortDescending                 │
00:03:23 #3761 [Verbose] > │         let v281 : int64 option = v280 |> Array.tryItem 0                    │
00:03:23 #3762 [Verbose] > │         let v282 : (int64 -> US2) = closure7()                               │
00:03:23 #3763 [Verbose] > │         let v283 : US2 = US2_0                                               │
00:03:23 #3764 [Verbose] > │         let v284 : US2 = v281 |> Option.map v282 |> Option.defaultValue v283 │
00:03:23 #3765 [Verbose] > │         let v287 : int64 =                                                   │
00:03:23 #3766 [Verbose] > │             match v284 with                                                  │
00:03:23 #3767 [Verbose] > │             | US2_0 -> (* None *)                                            │
00:03:23 #3768 [Verbose] > │                 0L                                                           │
00:03:23 #3769 [Verbose] > │             | US2_1(v285) -> (* Some *)                                      │
00:03:23 #3770 [Verbose] > │                 v285                                                         │
00:03:23 #3771 [Verbose] > │         v267.[int v270] <- v287                                              │
00:03:23 #3772 [Verbose] > │         let v288 : uint64 = v270 + 1UL                                       │
00:03:23 #3773 [Verbose] > │         v268.l0 <- v288                                                      │
00:03:23 #3774 [Verbose] > │         ()                                                                   │
00:03:23 #3775 [Verbose] > │     let v289 : uint64 = System.Convert.ToUInt64 v267.Length                  │
00:03:23 #3776 [Verbose] > │     let v290 : UH5 = UH5_1                                                   │
00:03:23 #3777 [Verbose] > │     let v291 : Mut3 = {l0 = 0UL; l1 = v290; l2 = 0} : Mut3                   │
00:03:23 #3778 [Verbose] > │     while method28(v289, v291) do                                            │
00:03:23 #3779 [Verbose] > │         let v293 : uint64 = v291.l0                                          │
00:03:23 #3780 [Verbose] > │         let struct (v294 : UH5, v295 : int32) = v291.l1, v291.l2             │
00:03:23 #3781 [Verbose] > │         let v296 : int64 = v267.[int v293]                                   │
00:03:23 #3782 [Verbose] > │         let v297 : int32 = v295 + 1                                          │
00:03:23 #3783 [Verbose] > │         let v298 : uint64 = v293 + 1UL                                       │
00:03:23 #3784 [Verbose] > │         let v299 : UH5 = UH5_0(v295, v296, v294)                             │
00:03:23 #3785 [Verbose] > │         v291.l0 <- v298                                                      │
00:03:23 #3786 [Verbose] > │         v291.l1 <- v299                                                      │
00:03:23 #3787 [Verbose] > │         v291.l2 <- v297                                                      │
00:03:23 #3788 [Verbose] > │         ()                                                                   │
00:03:23 #3789 [Verbose] > │     let struct (v300 : UH5, v301 : int32) = v291.l1, v291.l2                 │
00:03:23 #3790 [Verbose] > │     let v302 : UH5 = UH5_1                                                   │
00:03:23 #3791 [Verbose] > │     let v303 : UH5 = method29(v300, v302)                                    │
00:03:23 #3792 [Verbose] > │     let v304 : (struct (int32 * int64) []) = method30(v303)                  │
00:03:23 #3793 [Verbose] > │     let v305 : Map<int32, int64> = v304 |> Array.map (fun (struct (a, b)) -> │
00:03:23 #3794 [Verbose] > │ a, b) |> Map.ofArray                                                         │
00:03:23 #3795 [Verbose] > │     let v306 : (struct ((string []) * US1) []) = Array.zeroCreate<struct     │
00:03:23 #3796 [Verbose] > │ ((string []) * US1)> (System.Convert.ToInt32(v256))                          │
00:03:23 #3797 [Verbose] > │     let v307 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3798 [Verbose] > │     while method6(v256, v307) do                                             │
00:03:23 #3799 [Verbose] > │         let v309 : uint64 = v307.l0                                          │
00:03:23 #3800 [Verbose] > │         let struct (v310 : UH2, v311 : US1) = v243.[int v309]                │
00:03:23 #3801 [Verbose] > │         let v312 : UH6 = UH6_1                                               │
00:03:23 #3802 [Verbose] > │         let v313 : int32 = 0                                                 │
00:03:23 #3803 [Verbose] > │         let struct (v314 : UH6, v315 : int32) = method33(v310, v312, v313)   │
00:03:23 #3804 [Verbose] > │         let v316 : UH6 = UH6_1                                               │
00:03:23 #3805 [Verbose] > │         let v317 : UH6 = method34(v314, v316)                                │
00:03:23 #3806 [Verbose] > │         let v318 : UH2 = UH2_1                                               │
00:03:23 #3807 [Verbose] > │         let v319 : UH2 = method35(v305, v317, v318)                          │
00:03:23 #3808 [Verbose] > │         let v320 : (string []) = method36(v319)                              │
00:03:23 #3809 [Verbose] > │         v306.[int v309] <- struct (v320, v311)                               │
00:03:23 #3810 [Verbose] > │         let v321 : uint64 = v309 + 1UL                                       │
00:03:23 #3811 [Verbose] > │         v307.l0 <- v321                                                      │
00:03:23 #3812 [Verbose] > │         ()                                                                   │
00:03:23 #3813 [Verbose] > │     System.Console.WriteLine v35                                             │
00:03:23 #3814 [Verbose] > │     let v322 : uint64 = System.Convert.ToUInt64 v306.Length                  │
00:03:23 #3815 [Verbose] > │     let v323 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3816 [Verbose] > │     while method6(v322, v323) do                                             │
00:03:23 #3817 [Verbose] > │         let v325 : uint64 = v323.l0                                          │
00:03:23 #3818 [Verbose] > │         let struct (v326 : (string []), v327 : US1) = v306.[int v325]        │
00:03:23 #3819 [Verbose] > │         match v327 with                                                      │
00:03:23 #3820 [Verbose] > │         | US1_0 -> (* None *)                                                │
00:03:23 #3821 [Verbose] > │             let mutable result = None                                        │
00:03:23 #3822 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:23 #3823 [Verbose] > │             #if !WASM                                                        │
00:03:23 #3824 [Verbose] > │             ()                                                               │
00:03:23 #3825 [Verbose] > │             #else                                                            │
00:03:23 #3826 [Verbose] > │             ()                                                               │
00:03:23 #3827 [Verbose] > │             #endif                                                           │
00:03:23 #3828 [Verbose] > │             #else                                                            │
00:03:23 #3829 [Verbose] > │             System.Console.ResetColor ()                                     │
00:03:23 #3830 [Verbose] > │             ()                                                               │
00:03:23 #3831 [Verbose] > │             #endif                                                           │
00:03:23 #3832 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:23 #3833 [Verbose] > │             result |> Option.get                                             │
00:03:23 #3834 [Verbose] > │             ()                                                               │
00:03:23 #3835 [Verbose] > │         | US1_1(v328) -> (* Some *)                                          │
00:03:23 #3836 [Verbose] > │             let mutable result = None                                        │
00:03:23 #3837 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:23 #3838 [Verbose] > │             #if !WASM                                                        │
00:03:23 #3839 [Verbose] > │             ()                                                               │
00:03:23 #3840 [Verbose] > │             #else                                                            │
00:03:23 #3841 [Verbose] > │             ()                                                               │
00:03:23 #3842 [Verbose] > │             #endif                                                           │
00:03:23 #3843 [Verbose] > │             #else                                                            │
00:03:23 #3844 [Verbose] > │             System.Console.ForegroundColor <- v328                           │
00:03:23 #3845 [Verbose] > │             ()                                                               │
00:03:23 #3846 [Verbose] > │             #endif                                                           │
00:03:23 #3847 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:23 #3848 [Verbose] > │             result |> Option.get                                             │
00:03:23 #3849 [Verbose] > │             ()                                                               │
00:03:23 #3850 [Verbose] > │         let v329 : string = "\t| "                                           │
00:03:23 #3851 [Verbose] > │         let v330 : string = System.String.Join (v329, v326)                  │
00:03:23 #3852 [Verbose] > │         System.Console.WriteLine v330                                        │
00:03:23 #3853 [Verbose] > │         let mutable result = None                                            │
00:03:23 #3854 [Verbose] > │         #if FABLE_COMPILER_RUST                                              │
00:03:23 #3855 [Verbose] > │         #if !WASM                                                            │
00:03:23 #3856 [Verbose] > │         ()                                                                   │
00:03:23 #3857 [Verbose] > │         #else                                                                │
00:03:23 #3858 [Verbose] > │         ()                                                                   │
00:03:23 #3859 [Verbose] > │         #endif                                                               │
00:03:23 #3860 [Verbose] > │         #else                                                                │
00:03:23 #3861 [Verbose] > │         System.Console.ResetColor ()                                         │
00:03:23 #3862 [Verbose] > │         ()                                                                   │
00:03:23 #3863 [Verbose] > │         #endif                                                               │
00:03:23 #3864 [Verbose] > │         |> fun x -> result <- Some x                                         │
00:03:23 #3865 [Verbose] > │         result |> Option.get                                                 │
00:03:23 #3866 [Verbose] > │         let v331 : uint64 = v325 + 1UL                                       │
00:03:23 #3867 [Verbose] > │         v323.l0 <- v331                                                      │
00:03:23 #3868 [Verbose] > │         ()                                                                   │
00:03:23 #3869 [Verbose] > │     let v332 : ((float []) []) = Array.zeroCreate<(float [])>                │
00:03:23 #3870 [Verbose] > │ (System.Convert.ToInt32(v168))                                               │
00:03:23 #3871 [Verbose] > │     let v333 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3872 [Verbose] > │     while method6(v168, v333) do                                             │
00:03:23 #3873 [Verbose] > │         let v335 : uint64 = v333.l0                                          │
00:03:23 #3874 [Verbose] > │         let struct (v336 : string, v337 : string, v338 : string, v339 :      │
00:03:23 #3875 [Verbose] > │ (int64 [])) = v83.[int v335]                                                 │
00:03:23 #3876 [Verbose] > │         let v340 : (int64 -> float) = float                                  │
00:03:23 #3877 [Verbose] > │         let v341 : uint64 = System.Convert.ToUInt64 v339.Length              │
00:03:23 #3878 [Verbose] > │         let v342 : (float []) = Array.zeroCreate<float>                      │
00:03:23 #3879 [Verbose] > │ (System.Convert.ToInt32(v341))                                               │
00:03:23 #3880 [Verbose] > │         let v343 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #3881 [Verbose] > │         while method6(v341, v343) do                                         │
00:03:23 #3882 [Verbose] > │             let v345 : uint64 = v343.l0                                      │
00:03:23 #3883 [Verbose] > │             let v346 : int64 = v339.[int v345]                               │
00:03:23 #3884 [Verbose] > │             let v347 : float = v340 v346                                     │
00:03:23 #3885 [Verbose] > │             v342.[int v345] <- v347                                          │
00:03:23 #3886 [Verbose] > │             let v348 : uint64 = v345 + 1UL                                   │
00:03:23 #3887 [Verbose] > │             v343.l0 <- v348                                                  │
00:03:23 #3888 [Verbose] > │             ()                                                               │
00:03:23 #3889 [Verbose] > │         v332.[int v335] <- v342                                              │
00:03:23 #3890 [Verbose] > │         let v349 : uint64 = v335 + 1UL                                       │
00:03:23 #3891 [Verbose] > │         v333.l0 <- v349                                                      │
00:03:23 #3892 [Verbose] > │         ()                                                                   │
00:03:23 #3893 [Verbose] > │     let v350 : ((float []) []) = v332 |> Array.transpose                     │
00:03:23 #3894 [Verbose] > │     let v351 : uint64 = System.Convert.ToUInt64 v350.Length                  │
00:03:23 #3895 [Verbose] > │     let v352 : (float []) = Array.zeroCreate<float>                          │
00:03:23 #3896 [Verbose] > │ (System.Convert.ToInt32(v351))                                               │
00:03:23 #3897 [Verbose] > │     let v353 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3898 [Verbose] > │     while method6(v351, v353) do                                             │
00:03:23 #3899 [Verbose] > │         let v355 : uint64 = v353.l0                                          │
00:03:23 #3900 [Verbose] > │         let v356 : (float []) = v350.[int v355]                              │
00:03:23 #3901 [Verbose] > │         let v357 : float = v356 |> Array.average                             │
00:03:23 #3902 [Verbose] > │         v352.[int v355] <- v357                                              │
00:03:23 #3903 [Verbose] > │         let v358 : uint64 = v355 + 1UL                                       │
00:03:23 #3904 [Verbose] > │         v353.l0 <- v358                                                      │
00:03:23 #3905 [Verbose] > │         ()                                                                   │
00:03:23 #3906 [Verbose] > │     let v359 : (float -> int64) = int64                                      │
00:03:23 #3907 [Verbose] > │     let v360 : uint64 = System.Convert.ToUInt64 v352.Length                  │
00:03:23 #3908 [Verbose] > │     let v361 : (int64 []) = Array.zeroCreate<int64>                          │
00:03:23 #3909 [Verbose] > │ (System.Convert.ToInt32(v360))                                               │
00:03:23 #3910 [Verbose] > │     let v362 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3911 [Verbose] > │     while method6(v360, v362) do                                             │
00:03:23 #3912 [Verbose] > │         let v364 : uint64 = v362.l0                                          │
00:03:23 #3913 [Verbose] > │         let v365 : float = v352.[int v364]                                   │
00:03:23 #3914 [Verbose] > │         let v366 : int64 = v359 v365                                         │
00:03:23 #3915 [Verbose] > │         v361.[int v364] <- v366                                              │
00:03:23 #3916 [Verbose] > │         let v367 : uint64 = v364 + 1UL                                       │
00:03:23 #3917 [Verbose] > │         v362.l0 <- v367                                                      │
00:03:23 #3918 [Verbose] > │         ()                                                                   │
00:03:23 #3919 [Verbose] > │     let v368 : uint64 = System.Convert.ToUInt64 v361.Length                  │
00:03:23 #3920 [Verbose] > │     let v369 : UH5 = UH5_1                                                   │
00:03:23 #3921 [Verbose] > │     let v370 : Mut3 = {l0 = 0UL; l1 = v369; l2 = 0} : Mut3                   │
00:03:23 #3922 [Verbose] > │     while method28(v368, v370) do                                            │
00:03:23 #3923 [Verbose] > │         let v372 : uint64 = v370.l0                                          │
00:03:23 #3924 [Verbose] > │         let struct (v373 : UH5, v374 : int32) = v370.l1, v370.l2             │
00:03:23 #3925 [Verbose] > │         let v375 : int64 = v361.[int v372]                                   │
00:03:23 #3926 [Verbose] > │         let v376 : int32 = v374 + 1                                          │
00:03:23 #3927 [Verbose] > │         let v377 : uint64 = v372 + 1UL                                       │
00:03:23 #3928 [Verbose] > │         let v378 : UH5 = UH5_0(v374, v375, v373)                             │
00:03:23 #3929 [Verbose] > │         v370.l0 <- v377                                                      │
00:03:23 #3930 [Verbose] > │         v370.l1 <- v378                                                      │
00:03:23 #3931 [Verbose] > │         v370.l2 <- v376                                                      │
00:03:23 #3932 [Verbose] > │         ()                                                                   │
00:03:23 #3933 [Verbose] > │     let struct (v379 : UH5, v380 : int32) = v370.l1, v370.l2                 │
00:03:23 #3934 [Verbose] > │     let v381 : UH5 = UH5_1                                                   │
00:03:23 #3935 [Verbose] > │     let v382 : UH5 = method29(v379, v381)                                    │
00:03:23 #3936 [Verbose] > │     let v383 : (struct (int32 * int64) []) = method39(v382)                  │
00:03:23 #3937 [Verbose] > │     System.Console.WriteLine v35                                             │
00:03:23 #3938 [Verbose] > │     let v384 : string = "Average Ranking  "                                  │
00:03:23 #3939 [Verbose] > │     System.Console.WriteLine v384                                            │
00:03:23 #3940 [Verbose] > │     let v385 : (struct (int32 * int64) -> int64) = closure8()                │
00:03:23 #3941 [Verbose] > │     let v386 : (struct (int32 * int64) []) = v383 |> Array.sortBy v385       │
00:03:23 #3942 [Verbose] > │     let v387 : uint64 = System.Convert.ToUInt64 v386.Length                  │
00:03:23 #3943 [Verbose] > │     let v388 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #3944 [Verbose] > │     while method6(v387, v388) do                                             │
00:03:23 #3945 [Verbose] > │         let v390 : uint64 = v388.l0                                          │
00:03:23 #3946 [Verbose] > │         let struct (v391 : int32, v392 : int64) = v386.[int v390]            │
00:03:23 #3947 [Verbose] > │         let v393 : string = $"Test case %d{v391 + 1}. Average Time: %A{v392} │
00:03:23 #3948 [Verbose] > │ "                                                                            │
00:03:23 #3949 [Verbose] > │         System.Console.WriteLine v393                                        │
00:03:23 #3950 [Verbose] > │         let v394 : uint64 = v390 + 1UL                                       │
00:03:23 #3951 [Verbose] > │         v388.l0 <- v394                                                      │
00:03:23 #3952 [Verbose] > │         ()                                                                   │
00:03:23 #3953 [Verbose] > │     ()                                                                       │
00:03:23 #3954 [Verbose] > │ and method0 () : unit =                                                      │
00:03:23 #3955 [Verbose] > │     let v0 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                           │
00:03:23 #3956 [Verbose] > │     let v1 : (int32 []) = method1(v0)                                        │
00:03:23 #3957 [Verbose] > │     let v2 : int32 = v1.Length                                               │
00:03:23 #3958 [Verbose] > │     let v3 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                           │
00:03:23 #3959 [Verbose] > │     let v4 : (int32 []) = method1(v3)                                        │
00:03:23 #3960 [Verbose] > │     let v5 : int32 = v4.Length                                               │
00:03:23 #3961 [Verbose] > │     let v6 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                           │
00:03:23 #3962 [Verbose] > │     let v7 : (int32 []) = method1(v6)                                        │
00:03:23 #3963 [Verbose] > │     let v8 : int32 = v7.Length                                               │
00:03:23 #3964 [Verbose] > │     let v9 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                           │
00:03:23 #3965 [Verbose] > │     let v10 : (int32 []) = method1(v9)                                       │
00:03:23 #3966 [Verbose] > │     let v11 : int32 = v10.Length                                             │
00:03:23 #3967 [Verbose] > │     let v12 : (int32 []) = Array.zeroCreate<int32> (100)                     │
00:03:23 #3968 [Verbose] > │     let v13 : Mut0 = {l0 = 0} : Mut0                                         │
00:03:23 #3969 [Verbose] > │     while method2(v13) do                                                    │
00:03:23 #3970 [Verbose] > │         let v15 : int32 = v13.l0                                             │
00:03:23 #3971 [Verbose] > │         let v16 : int32 = 1 + v15                                            │
00:03:23 #3972 [Verbose] > │         v12.[int v15] <- v16                                                 │
00:03:23 #3973 [Verbose] > │         let v17 : int32 = v15 + 1                                            │
00:03:23 #3974 [Verbose] > │         v13.l0 <- v17                                                        │
00:03:23 #3975 [Verbose] > │         ()                                                                   │
00:03:23 #3976 [Verbose] > │     let v18 : int32 = v12.Length                                             │
00:03:23 #3977 [Verbose] > │     let v19 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                          │
00:03:23 #3978 [Verbose] > │     let v20 : (int32 []) = method1(v19)                                      │
00:03:23 #3979 [Verbose] > │     let v21 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                          │
00:03:23 #3980 [Verbose] > │     let v22 : (int32 []) = method1(v21)                                      │
00:03:23 #3981 [Verbose] > │     let v23 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                          │
00:03:23 #3982 [Verbose] > │     let v24 : (int32 []) = method1(v23)                                      │
00:03:23 #3983 [Verbose] > │     let v25 : (int32 []) = [|1; 3; 4; 6; 8; 9; 11|]                          │
00:03:23 #3984 [Verbose] > │     let v26 : (int32 []) = method1(v25)                                      │
00:03:23 #3985 [Verbose] > │     let v27 : (int32 []) = Array.zeroCreate<int32> (100)                     │
00:03:23 #3986 [Verbose] > │     let v28 : Mut0 = {l0 = 0} : Mut0                                         │
00:03:23 #3987 [Verbose] > │     while method2(v28) do                                                    │
00:03:23 #3988 [Verbose] > │         let v30 : int32 = v28.l0                                             │
00:03:23 #3989 [Verbose] > │         let v31 : int32 = 1 + v30                                            │
00:03:23 #3990 [Verbose] > │         v27.[int v30] <- v31                                                 │
00:03:23 #3991 [Verbose] > │         let v32 : int32 = v30 + 1                                            │
00:03:23 #3992 [Verbose] > │         v28.l0 <- v32                                                        │
00:03:23 #3993 [Verbose] > │         ()                                                                   │
00:03:23 #3994 [Verbose] > │     let v33 : (unit -> unit) = closure0()                                    │
00:03:23 #3995 [Verbose] > │     let v34 : string = nameof v33                                            │
00:03:23 #3996 [Verbose] > │     let v35 : string = ""                                                    │
00:03:23 #3997 [Verbose] > │     System.Console.WriteLine v35                                             │
00:03:23 #3998 [Verbose] > │     System.Console.WriteLine v35                                             │
00:03:23 #3999 [Verbose] > │     let v36 : string = $"Test: {v34}"                                        │
00:03:23 #4000 [Verbose] > │     System.Console.WriteLine v36                                             │
00:03:23 #4001 [Verbose] > │     let v37 : int32 = 6                                                      │
00:03:23 #4002 [Verbose] > │     let v38 : int32 = 3                                                      │
00:03:23 #4003 [Verbose] > │     let v39 : US0 = US0_1(v38)                                               │
00:03:23 #4004 [Verbose] > │     let v40 : int32 = 1                                                      │
00:03:23 #4005 [Verbose] > │     let v41 : int32 = 0                                                      │
00:03:23 #4006 [Verbose] > │     let v42 : US0 = US0_1(v41)                                               │
00:03:23 #4007 [Verbose] > │     let v43 : int32 = 11                                                     │
00:03:23 #4008 [Verbose] > │     let v44 : int32 = 6                                                      │
00:03:23 #4009 [Verbose] > │     let v45 : US0 = US0_1(v44)                                               │
00:03:23 #4010 [Verbose] > │     let v46 : int32 = 12                                                     │
00:03:23 #4011 [Verbose] > │     let v47 : US0 = US0_0                                                    │
00:03:23 #4012 [Verbose] > │     let v48 : int32 = 60                                                     │
00:03:23 #4013 [Verbose] > │     let v49 : int32 = 59                                                     │
00:03:23 #4014 [Verbose] > │     let v50 : US0 = US0_1(v49)                                               │
00:03:23 #4015 [Verbose] > │     let v51 : int32 = 6                                                      │
00:03:23 #4016 [Verbose] > │     let v52 : int32 = 7                                                      │
00:03:23 #4017 [Verbose] > │     let v53 : int32 = 3                                                      │
00:03:23 #4018 [Verbose] > │     let v54 : US0 = US0_1(v53)                                               │
00:03:23 #4019 [Verbose] > │     let v55 : int32 = 1                                                      │
00:03:23 #4020 [Verbose] > │     let v56 : int32 = 7                                                      │
00:03:23 #4021 [Verbose] > │     let v57 : int32 = 0                                                      │
00:03:23 #4022 [Verbose] > │     let v58 : US0 = US0_1(v57)                                               │
00:03:23 #4023 [Verbose] > │     let v59 : int32 = 11                                                     │
00:03:23 #4024 [Verbose] > │     let v60 : int32 = 7                                                      │
00:03:23 #4025 [Verbose] > │     let v61 : int32 = 6                                                      │
00:03:23 #4026 [Verbose] > │     let v62 : US0 = US0_1(v61)                                               │
00:03:23 #4027 [Verbose] > │     let v63 : int32 = 12                                                     │
00:03:23 #4028 [Verbose] > │     let v64 : int32 = 7                                                      │
00:03:23 #4029 [Verbose] > │     let v65 : US0 = US0_0                                                    │
00:03:23 #4030 [Verbose] > │     let v66 : int32 = 60                                                     │
00:03:23 #4031 [Verbose] > │     let v67 : int32 = 100                                                    │
00:03:23 #4032 [Verbose] > │     let v68 : int32 = 59                                                     │
00:03:23 #4033 [Verbose] > │     let v69 : US0 = US0_1(v68)                                               │
00:03:23 #4034 [Verbose] > │     let v70 : UH0 = UH0_1                                                    │
00:03:23 #4035 [Verbose] > │     let v71 : UH0 = UH0_0(v27, v66, v67, v69, v70)                           │
00:03:23 #4036 [Verbose] > │     let v72 : UH0 = UH0_0(v26, v63, v64, v65, v71)                           │
00:03:23 #4037 [Verbose] > │     let v73 : UH0 = UH0_0(v24, v59, v60, v62, v72)                           │
00:03:23 #4038 [Verbose] > │     let v74 : UH0 = UH0_0(v22, v55, v56, v58, v73)                           │
00:03:23 #4039 [Verbose] > │     let v75 : UH0 = UH0_0(v20, v51, v52, v54, v74)                           │
00:03:23 #4040 [Verbose] > │     let v76 : UH0 = UH0_0(v12, v48, v18, v50, v75)                           │
00:03:23 #4041 [Verbose] > │     let v77 : UH0 = UH0_0(v10, v46, v11, v47, v76)                           │
00:03:23 #4042 [Verbose] > │     let v78 : UH0 = UH0_0(v7, v43, v8, v45, v77)                             │
00:03:23 #4043 [Verbose] > │     let v79 : UH0 = UH0_0(v4, v40, v5, v42, v78)                             │
00:03:23 #4044 [Verbose] > │     let v80 : UH0 = UH0_0(v1, v37, v2, v39, v79)                             │
00:03:23 #4045 [Verbose] > │     let v81 : (struct ((int32 []) * int32 * int32 * US0) []) = method3(v80)  │
00:03:23 #4046 [Verbose] > │     let v82 : uint64 = System.Convert.ToUInt64 v81.Length                    │
00:03:23 #4047 [Verbose] > │     let v83 : (struct (string * string * string * (int64 [])) []) =          │
00:03:23 #4048 [Verbose] > │ Array.zeroCreate<struct (string * string * string * (int64 []))>             │
00:03:23 #4049 [Verbose] > │ (System.Convert.ToInt32(v82))                                                │
00:03:23 #4050 [Verbose] > │     let v84 : Mut1 = {l0 = 0UL} : Mut1                                       │
00:03:23 #4051 [Verbose] > │     while method6(v82, v84) do                                               │
00:03:23 #4052 [Verbose] > │         let v86 : uint64 = v84.l0                                            │
00:03:23 #4053 [Verbose] > │         let struct (v87 : (int32 []), v88 : int32, v89 : int32, v90 : US0) = │
00:03:23 #4054 [Verbose] > │ v81.[int v86]                                                                │
00:03:23 #4055 [Verbose] > │         let v91 : string = $"%A{struct (v87, v88, v89)}"                     │
00:03:23 #4056 [Verbose] > │         System.Console.WriteLine v35                                         │
00:03:23 #4057 [Verbose] > │         let v92 : string = $"Solution: {v91}  "                              │
00:03:23 #4058 [Verbose] > │         System.Console.WriteLine v92                                         │
00:03:23 #4059 [Verbose] > │         let v93 : int32 = 0                                                  │
00:03:23 #4060 [Verbose] > │         let v94 : string = "semi_open_1"                                     │
00:03:23 #4061 [Verbose] > │         let v95 : (struct ((int32 []) * int32 * int32) -> US0) = closure1()  │
00:03:23 #4062 [Verbose] > │         let v96 : int32 = 1                                                  │
00:03:23 #4063 [Verbose] > │         let v97 : string = "closed_1"                                        │
00:03:23 #4064 [Verbose] > │         let v98 : (struct ((int32 []) * int32 * int32) -> US0) = closure2()  │
00:03:23 #4065 [Verbose] > │         let v99 : int32 = 2                                                  │
00:03:23 #4066 [Verbose] > │         let v100 : string = "semi_open_2"                                    │
00:03:23 #4067 [Verbose] > │         let v101 : (struct ((int32 []) * int32 * int32) -> US0) = closure3() │
00:03:23 #4068 [Verbose] > │         let v102 : int32 = 3                                                 │
00:03:23 #4069 [Verbose] > │         let v103 : string = "closed_2"                                       │
00:03:23 #4070 [Verbose] > │         let v104 : (struct ((int32 []) * int32 * int32) -> US0) = closure4() │
00:03:23 #4071 [Verbose] > │         let v105 : UH1 = UH1_1                                               │
00:03:23 #4072 [Verbose] > │         let v106 : UH1 = UH1_0(v102, v103, v104, v105)                       │
00:03:23 #4073 [Verbose] > │         let v107 : UH1 = UH1_0(v99, v100, v101, v106)                        │
00:03:23 #4074 [Verbose] > │         let v108 : UH1 = UH1_0(v96, v97, v98, v107)                          │
00:03:23 #4075 [Verbose] > │         let v109 : UH1 = UH1_0(v93, v94, v95, v108)                          │
00:03:23 #4076 [Verbose] > │         let v110 : (struct (int32 * string * (struct ((int32 []) * int32 *   │
00:03:23 #4077 [Verbose] > │ int32) -> US0)) []) = method11(v109)                                         │
00:03:23 #4078 [Verbose] > │         let v111 : uint64 = System.Convert.ToUInt64 v110.Length              │
00:03:23 #4079 [Verbose] > │         let v112 : (struct (US0 * int64) []) = Array.zeroCreate<struct (US0  │
00:03:23 #4080 [Verbose] > │ * int64)> (System.Convert.ToInt32(v111))                                     │
00:03:23 #4081 [Verbose] > │         let v113 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #4082 [Verbose] > │         while method6(v111, v113) do                                         │
00:03:23 #4083 [Verbose] > │             let v115 : uint64 = v113.l0                                      │
00:03:23 #4084 [Verbose] > │             let struct (v116 : int32, v117 : string, v118 : (struct ((int32  │
00:03:23 #4085 [Verbose] > │ []) * int32 * int32) -> US0)) = v110.[int v115]                              │
00:03:23 #4086 [Verbose] > │             let mutable result = None                                        │
00:03:23 #4087 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:23 #4088 [Verbose] > │             #if !WASM                                                        │
00:03:23 #4089 [Verbose] > │             ()                                                               │
00:03:23 #4090 [Verbose] > │             #else                                                            │
00:03:23 #4091 [Verbose] > │             ()                                                               │
00:03:23 #4092 [Verbose] > │             #endif                                                           │
00:03:23 #4093 [Verbose] > │             #else                                                            │
00:03:23 #4094 [Verbose] > │             System.GC.Collect ()                                             │
00:03:23 #4095 [Verbose] > │             ()                                                               │
00:03:23 #4096 [Verbose] > │             #endif                                                           │
00:03:23 #4097 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:23 #4098 [Verbose] > │             result |> Option.get                                             │
00:03:23 #4099 [Verbose] > │             let v119 : (unit -> System.Diagnostics.Stopwatch) =              │
00:03:23 #4100 [Verbose] > │ System.Diagnostics.Stopwatch                                                 │
00:03:23 #4101 [Verbose] > │             let v120 : System.Diagnostics.Stopwatch = v119 ()                │
00:03:23 #4102 [Verbose] > │             v120.Start ()                                                    │
00:03:23 #4103 [Verbose] > │             let v121 : int64 = v120.ElapsedMilliseconds                      │
00:03:23 #4104 [Verbose] > │             let v122 : (int32 []) = Array.zeroCreate<int32> (8000001)        │
00:03:23 #4105 [Verbose] > │             let v123 : Mut0 = {l0 = 0} : Mut0                                │
00:03:23 #4106 [Verbose] > │             while method14(v123) do                                          │
00:03:23 #4107 [Verbose] > │                 let v125 : int32 = v123.l0                                   │
00:03:23 #4108 [Verbose] > │                 v122.[int v125] <- v125                                      │
00:03:23 #4109 [Verbose] > │                 let v126 : int32 = v125 + 1                                  │
00:03:23 #4110 [Verbose] > │                 v123.l0 <- v126                                              │
00:03:23 #4111 [Verbose] > │                 ()                                                           │
00:03:23 #4112 [Verbose] > │             let v127 : (int32 -> US0) = closure5(v87, v88, v89, v118)        │
00:03:23 #4113 [Verbose] > │             let v128 : (US0 []) = v122 |> Array.Parallel.map v127            │
00:03:23 #4114 [Verbose] > │             let v129 : int32 = v128.Length                                   │
00:03:23 #4115 [Verbose] > │             let v130 : int32 = v129 - 1                                      │
00:03:23 #4116 [Verbose] > │             let v131 : US0 = v128.[int v130]                                 │
00:03:23 #4117 [Verbose] > │             let v132 : int64 = v120.ElapsedMilliseconds                      │
00:03:23 #4118 [Verbose] > │             let v133 : int64 = v132 - v121                                   │
00:03:23 #4119 [Verbose] > │             let v134 : string = $"Test case {v116 + 1}. {v117}. Time: {v133} │
00:03:23 #4120 [Verbose] > │ "                                                                            │
00:03:23 #4121 [Verbose] > │             System.Console.WriteLine v134                                    │
00:03:23 #4122 [Verbose] > │             v112.[int v115] <- struct (v131, v133)                           │
00:03:23 #4123 [Verbose] > │             let v135 : uint64 = v115 + 1UL                                   │
00:03:23 #4124 [Verbose] > │             v113.l0 <- v135                                                  │
00:03:23 #4125 [Verbose] > │             ()                                                               │
00:03:23 #4126 [Verbose] > │         let v136 : uint64 = System.Convert.ToUInt64 v112.Length              │
00:03:23 #4127 [Verbose] > │         let v137 : (US0 []) = Array.zeroCreate<US0>                          │
00:03:23 #4128 [Verbose] > │ (System.Convert.ToInt32(v136))                                               │
00:03:23 #4129 [Verbose] > │         let v138 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #4130 [Verbose] > │         while method6(v136, v138) do                                         │
00:03:23 #4131 [Verbose] > │             let v140 : uint64 = v138.l0                                      │
00:03:23 #4132 [Verbose] > │             let struct (v141 : US0, v142 : int64) = v112.[int v140]          │
00:03:23 #4133 [Verbose] > │             v137.[int v140] <- v141                                          │
00:03:23 #4134 [Verbose] > │             let v143 : uint64 = v140 + 1UL                                   │
00:03:23 #4135 [Verbose] > │             v138.l0 <- v143                                                  │
00:03:23 #4136 [Verbose] > │             ()                                                               │
00:03:23 #4137 [Verbose] > │         let v144 : uint64 = System.Convert.ToUInt64 v137.Length              │
00:03:23 #4138 [Verbose] > │         let v145 : bool = v144 <= 1UL                                        │
00:03:23 #4139 [Verbose] > │         if v145 then                                                         │
00:03:23 #4140 [Verbose] > │             ()                                                               │
00:03:23 #4141 [Verbose] > │         else                                                                 │
00:03:23 #4142 [Verbose] > │             let v146 : US0 = v137.[int 0UL]                                  │
00:03:23 #4143 [Verbose] > │             let v147 : uint64 = 0UL                                          │
00:03:23 #4144 [Verbose] > │             let v148 : bool = method15(v146, v137, v147)                     │
00:03:23 #4145 [Verbose] > │             if v148 then                                                     │
00:03:23 #4146 [Verbose] > │                 ()                                                           │
00:03:23 #4147 [Verbose] > │             else                                                             │
00:03:23 #4148 [Verbose] > │                 let v149 : string = $"Challenge error: {v137}"               │
00:03:23 #4149 [Verbose] > │                 failwith<unit> v149                                          │
00:03:23 #4150 [Verbose] > │         let v150 : string = $"%A{v90}"                                       │
00:03:23 #4151 [Verbose] > │         let v151 : (US0 []) = Array.zeroCreate<US0>                          │
00:03:23 #4152 [Verbose] > │ (System.Convert.ToInt32(v136))                                               │
00:03:23 #4153 [Verbose] > │         let v152 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #4154 [Verbose] > │         while method6(v136, v152) do                                         │
00:03:23 #4155 [Verbose] > │             let v154 : uint64 = v152.l0                                      │
00:03:23 #4156 [Verbose] > │             let struct (v155 : US0, v156 : int64) = v112.[int v154]          │
00:03:23 #4157 [Verbose] > │             v151.[int v154] <- v155                                          │
00:03:23 #4158 [Verbose] > │             let v157 : uint64 = v154 + 1UL                                   │
00:03:23 #4159 [Verbose] > │             v152.l0 <- v157                                                  │
00:03:23 #4160 [Verbose] > │             ()                                                               │
00:03:23 #4161 [Verbose] > │         let v158 : US0 = v151.[int 0UL]                                      │
00:03:23 #4162 [Verbose] > │         let v159 : string = $"%A{v158}"                                      │
00:03:23 #4163 [Verbose] > │         let v160 : (int64 []) = Array.zeroCreate<int64>                      │
00:03:23 #4164 [Verbose] > │ (System.Convert.ToInt32(v136))                                               │
00:03:23 #4165 [Verbose] > │         let v161 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #4166 [Verbose] > │         while method6(v136, v161) do                                         │
00:03:23 #4167 [Verbose] > │             let v163 : uint64 = v161.l0                                      │
00:03:23 #4168 [Verbose] > │             let struct (v164 : US0, v165 : int64) = v112.[int v163]          │
00:03:23 #4169 [Verbose] > │             v160.[int v163] <- v165                                          │
00:03:23 #4170 [Verbose] > │             let v166 : uint64 = v163 + 1UL                                   │
00:03:23 #4171 [Verbose] > │             v161.l0 <- v166                                                  │
00:03:23 #4172 [Verbose] > │             ()                                                               │
00:03:23 #4173 [Verbose] > │         v83.[int v86] <- struct (v150, v91, v159, v160)                      │
00:03:23 #4174 [Verbose] > │         let v167 : uint64 = v86 + 1UL                                        │
00:03:23 #4175 [Verbose] > │         v84.l0 <- v167                                                       │
00:03:23 #4176 [Verbose] > │         ()                                                                   │
00:03:23 #4177 [Verbose] > │     let v168 : uint64 = System.Convert.ToUInt64 v83.Length                   │
00:03:23 #4178 [Verbose] > │     let v169 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 *      │
00:03:23 #4179 [Verbose] > │ US1)> (System.Convert.ToInt32(v168))                                         │
00:03:23 #4180 [Verbose] > │     let v170 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4181 [Verbose] > │     while method6(v168, v170) do                                             │
00:03:23 #4182 [Verbose] > │         let v172 : uint64 = v170.l0                                          │
00:03:23 #4183 [Verbose] > │         let struct (v173 : string, v174 : string, v175 : string, v176 :      │
00:03:23 #4184 [Verbose] > │ (int64 [])) = v83.[int v172]                                                 │
00:03:23 #4185 [Verbose] > │         let v177 : uint64 = System.Convert.ToUInt64 v176.Length              │
00:03:23 #4186 [Verbose] > │         let v178 : UH3 = UH3_1                                               │
00:03:23 #4187 [Verbose] > │         let v179 : Mut2 = {l0 = 0UL; l1 = v178; l2 = 0L} : Mut2              │
00:03:23 #4188 [Verbose] > │         while method16(v177, v179) do                                        │
00:03:23 #4189 [Verbose] > │             let v181 : uint64 = v179.l0                                      │
00:03:23 #4190 [Verbose] > │             let struct (v182 : UH3, v183 : int64) = v179.l1, v179.l2         │
00:03:23 #4191 [Verbose] > │             let v184 : int64 = v176.[int v181]                               │
00:03:23 #4192 [Verbose] > │             let v185 : int64 = v183 + 1L                                     │
00:03:23 #4193 [Verbose] > │             let v186 : uint64 = v181 + 1UL                                   │
00:03:23 #4194 [Verbose] > │             let v187 : UH3 = UH3_0(v183, v184, v182)                         │
00:03:23 #4195 [Verbose] > │             v179.l0 <- v186                                                  │
00:03:23 #4196 [Verbose] > │             v179.l1 <- v187                                                  │
00:03:23 #4197 [Verbose] > │             v179.l2 <- v185                                                  │
00:03:23 #4198 [Verbose] > │             ()                                                               │
00:03:23 #4199 [Verbose] > │         let struct (v188 : UH3, v189 : int64) = v179.l1, v179.l2             │
00:03:23 #4200 [Verbose] > │         let v190 : UH3 = UH3_1                                               │
00:03:23 #4201 [Verbose] > │         let v191 : UH3 = method17(v188, v190)                                │
00:03:23 #4202 [Verbose] > │         let v192 : (struct (int64 * int64) []) = method18(v191)              │
00:03:23 #4203 [Verbose] > │         let v193 : int32 = v192.Length                                       │
00:03:23 #4204 [Verbose] > │         let v194 : (struct (int64 * int64) []) = Array.zeroCreate<struct     │
00:03:23 #4205 [Verbose] > │ (int64 * int64)> (v193)                                                      │
00:03:23 #4206 [Verbose] > │         let v195 : Mut0 = {l0 = 0} : Mut0                                    │
00:03:23 #4207 [Verbose] > │         while method21(v193, v195) do                                        │
00:03:23 #4208 [Verbose] > │             let v197 : int32 = v195.l0                                       │
00:03:23 #4209 [Verbose] > │             let struct (v198 : int64, v199 : int64) = v192.[int v197]        │
00:03:23 #4210 [Verbose] > │             let v200 : int64 = v198 + 1L                                     │
00:03:23 #4211 [Verbose] > │             v194.[int v197] <- struct (v200, v199)                           │
00:03:23 #4212 [Verbose] > │             let v201 : int32 = v197 + 1                                      │
00:03:23 #4213 [Verbose] > │             v195.l0 <- v201                                                  │
00:03:23 #4214 [Verbose] > │             ()                                                               │
00:03:23 #4215 [Verbose] > │         let v202 : (struct (int64 * int64) -> int64) = closure6()            │
00:03:23 #4216 [Verbose] > │         let v203 : (struct (int64 * int64) []) = v194 |> Array.sortBy v202   │
00:03:23 #4217 [Verbose] > │         let struct (v204 : int64, v205 : int64) = v203.[int 0]               │
00:03:23 #4218 [Verbose] > │         let v206 : string = $"%A{struct (v204, v205)}"                       │
00:03:23 #4219 [Verbose] > │         let v207 : bool = v173 = v175                                        │
00:03:23 #4220 [Verbose] > │         let v212 : US1 =                                                     │
00:03:23 #4221 [Verbose] > │             if v207 then                                                     │
00:03:23 #4222 [Verbose] > │                 let v208 : System.ConsoleColor =                             │
00:03:23 #4223 [Verbose] > │ System.ConsoleColor.DarkGreen                                                │
00:03:23 #4224 [Verbose] > │                 US1_1(v208)                                                  │
00:03:23 #4225 [Verbose] > │             else                                                             │
00:03:23 #4226 [Verbose] > │                 let v210 : System.ConsoleColor = System.ConsoleColor.DarkRed │
00:03:23 #4227 [Verbose] > │                 US1_1(v210)                                                  │
00:03:23 #4228 [Verbose] > │         let v213 : UH2 = UH2_1                                               │
00:03:23 #4229 [Verbose] > │         let v214 : UH2 = UH2_0(v206, v213)                                   │
00:03:23 #4230 [Verbose] > │         let v215 : UH2 = UH2_0(v175, v214)                                   │
00:03:23 #4231 [Verbose] > │         let v216 : UH2 = UH2_0(v173, v215)                                   │
00:03:23 #4232 [Verbose] > │         let v217 : UH2 = UH2_0(v174, v216)                                   │
00:03:23 #4233 [Verbose] > │         v169.[int v172] <- struct (v217, v212)                               │
00:03:23 #4234 [Verbose] > │         let v218 : uint64 = v172 + 1UL                                       │
00:03:23 #4235 [Verbose] > │         v170.l0 <- v218                                                      │
00:03:23 #4236 [Verbose] > │         ()                                                                   │
00:03:23 #4237 [Verbose] > │     let v219 : string = "Input"                                              │
00:03:23 #4238 [Verbose] > │     let v220 : string = "Expected"                                           │
00:03:23 #4239 [Verbose] > │     let v221 : string = "Result"                                             │
00:03:23 #4240 [Verbose] > │     let v222 : string = "Best"                                               │
00:03:23 #4241 [Verbose] > │     let v223 : UH2 = UH2_1                                                   │
00:03:23 #4242 [Verbose] > │     let v224 : UH2 = UH2_0(v222, v223)                                       │
00:03:23 #4243 [Verbose] > │     let v225 : UH2 = UH2_0(v221, v224)                                       │
00:03:23 #4244 [Verbose] > │     let v226 : UH2 = UH2_0(v220, v225)                                       │
00:03:23 #4245 [Verbose] > │     let v227 : UH2 = UH2_0(v219, v226)                                       │
00:03:23 #4246 [Verbose] > │     let v228 : US1 = US1_0                                                   │
00:03:23 #4247 [Verbose] > │     let v229 : string = "---"                                                │
00:03:23 #4248 [Verbose] > │     let v230 : UH2 = UH2_1                                                   │
00:03:23 #4249 [Verbose] > │     let v231 : UH2 = UH2_0(v229, v230)                                       │
00:03:23 #4250 [Verbose] > │     let v232 : UH2 = UH2_0(v229, v231)                                       │
00:03:23 #4251 [Verbose] > │     let v233 : UH2 = UH2_0(v229, v232)                                       │
00:03:23 #4252 [Verbose] > │     let v234 : UH2 = UH2_0(v229, v233)                                       │
00:03:23 #4253 [Verbose] > │     let v235 : US1 = US1_0                                                   │
00:03:23 #4254 [Verbose] > │     let v236 : UH4 = UH4_1                                                   │
00:03:23 #4255 [Verbose] > │     let v237 : UH4 = UH4_0(v234, v235, v236)                                 │
00:03:23 #4256 [Verbose] > │     let v238 : UH4 = UH4_0(v227, v228, v237)                                 │
00:03:23 #4257 [Verbose] > │     let v239 : (struct (UH2 * US1) []) = method22(v238)                      │
00:03:23 #4258 [Verbose] > │     let v240 : uint64 = System.Convert.ToUInt64 v239.Length                  │
00:03:23 #4259 [Verbose] > │     let v241 : uint64 = System.Convert.ToUInt64 v169.Length                  │
00:03:23 #4260 [Verbose] > │     let v242 : uint64 = v240 + v241                                          │
00:03:23 #4261 [Verbose] > │     let v243 : (struct (UH2 * US1) []) = Array.zeroCreate<struct (UH2 *      │
00:03:23 #4262 [Verbose] > │ US1)> (System.Convert.ToInt32(v242))                                         │
00:03:23 #4263 [Verbose] > │     let v244 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4264 [Verbose] > │     while method6(v242, v244) do                                             │
00:03:23 #4265 [Verbose] > │         let v246 : uint64 = v244.l0                                          │
00:03:23 #4266 [Verbose] > │         let v247 : bool = v246 < v240                                        │
00:03:23 #4267 [Verbose] > │         let struct (v253 : UH2, v254 : US1) =                                │
00:03:23 #4268 [Verbose] > │             if v247 then                                                     │
00:03:23 #4269 [Verbose] > │                 let struct (v248 : UH2, v249 : US1) = v239.[int v246]        │
00:03:23 #4270 [Verbose] > │                 struct (v248, v249)                                          │
00:03:23 #4271 [Verbose] > │             else                                                             │
00:03:23 #4272 [Verbose] > │                 let v250 : uint64 = v246 - v240                              │
00:03:23 #4273 [Verbose] > │                 let struct (v251 : UH2, v252 : US1) = v169.[int v250]        │
00:03:23 #4274 [Verbose] > │                 struct (v251, v252)                                          │
00:03:23 #4275 [Verbose] > │         v243.[int v246] <- struct (v253, v254)                               │
00:03:23 #4276 [Verbose] > │         let v255 : uint64 = v246 + 1UL                                       │
00:03:23 #4277 [Verbose] > │         v244.l0 <- v255                                                      │
00:03:23 #4278 [Verbose] > │         ()                                                                   │
00:03:23 #4279 [Verbose] > │     let v256 : uint64 = System.Convert.ToUInt64 v243.Length                  │
00:03:23 #4280 [Verbose] > │     let v257 : ((string []) []) = Array.zeroCreate<(string [])>              │
00:03:23 #4281 [Verbose] > │ (System.Convert.ToInt32(v256))                                               │
00:03:23 #4282 [Verbose] > │     let v258 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4283 [Verbose] > │     while method6(v256, v258) do                                             │
00:03:23 #4284 [Verbose] > │         let v260 : uint64 = v258.l0                                          │
00:03:23 #4285 [Verbose] > │         let struct (v261 : UH2, v262 : US1) = v243.[int v260]                │
00:03:23 #4286 [Verbose] > │         let v263 : (string []) = method25(v261)                              │
00:03:23 #4287 [Verbose] > │         v257.[int v260] <- v263                                              │
00:03:23 #4288 [Verbose] > │         let v264 : uint64 = v260 + 1UL                                       │
00:03:23 #4289 [Verbose] > │         v258.l0 <- v264                                                      │
00:03:23 #4290 [Verbose] > │         ()                                                                   │
00:03:23 #4291 [Verbose] > │     let v265 : ((string []) []) = v257 |> Array.transpose                    │
00:03:23 #4292 [Verbose] > │     let v266 : uint64 = System.Convert.ToUInt64 v265.Length                  │
00:03:23 #4293 [Verbose] > │     let v267 : (int64 []) = Array.zeroCreate<int64>                          │
00:03:23 #4294 [Verbose] > │ (System.Convert.ToInt32(v266))                                               │
00:03:23 #4295 [Verbose] > │     let v268 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4296 [Verbose] > │     while method6(v266, v268) do                                             │
00:03:23 #4297 [Verbose] > │         let v270 : uint64 = v268.l0                                          │
00:03:23 #4298 [Verbose] > │         let v271 : (string []) = v265.[int v270]                             │
00:03:23 #4299 [Verbose] > │         let v272 : uint64 = System.Convert.ToUInt64 v271.Length              │
00:03:23 #4300 [Verbose] > │         let v273 : (int64 []) = Array.zeroCreate<int64>                      │
00:03:23 #4301 [Verbose] > │ (System.Convert.ToInt32(v272))                                               │
00:03:23 #4302 [Verbose] > │         let v274 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #4303 [Verbose] > │         while method6(v272, v274) do                                         │
00:03:23 #4304 [Verbose] > │             let v276 : uint64 = v274.l0                                      │
00:03:23 #4305 [Verbose] > │             let v277 : string = v271.[int v276]                              │
00:03:23 #4306 [Verbose] > │             let v278 : int64 = System.Convert.ToInt64 v277.Length            │
00:03:23 #4307 [Verbose] > │             v273.[int v276] <- v278                                          │
00:03:23 #4308 [Verbose] > │             let v279 : uint64 = v276 + 1UL                                   │
00:03:23 #4309 [Verbose] > │             v274.l0 <- v279                                                  │
00:03:23 #4310 [Verbose] > │             ()                                                               │
00:03:23 #4311 [Verbose] > │         let v280 : (int64 []) = v273 |> Array.sortDescending                 │
00:03:23 #4312 [Verbose] > │         let v281 : int64 option = v280 |> Array.tryItem 0                    │
00:03:23 #4313 [Verbose] > │         let v282 : (int64 -> US2) = closure7()                               │
00:03:23 #4314 [Verbose] > │         let v283 : US2 = US2_0                                               │
00:03:23 #4315 [Verbose] > │         let v284 : US2 = v281 |> Option.map v282 |> Option.defaultValue v283 │
00:03:23 #4316 [Verbose] > │         let v287 : int64 =                                                   │
00:03:23 #4317 [Verbose] > │             match v284 with                                                  │
00:03:23 #4318 [Verbose] > │             | US2_0 -> (* None *)                                            │
00:03:23 #4319 [Verbose] > │                 0L                                                           │
00:03:23 #4320 [Verbose] > │             | US2_1(v285) -> (* Some *)                                      │
00:03:23 #4321 [Verbose] > │                 v285                                                         │
00:03:23 #4322 [Verbose] > │         v267.[int v270] <- v287                                              │
00:03:23 #4323 [Verbose] > │         let v288 : uint64 = v270 + 1UL                                       │
00:03:23 #4324 [Verbose] > │         v268.l0 <- v288                                                      │
00:03:23 #4325 [Verbose] > │         ()                                                                   │
00:03:23 #4326 [Verbose] > │     let v289 : uint64 = System.Convert.ToUInt64 v267.Length                  │
00:03:23 #4327 [Verbose] > │     let v290 : UH5 = UH5_1                                                   │
00:03:23 #4328 [Verbose] > │     let v291 : Mut3 = {l0 = 0UL; l1 = v290; l2 = 0} : Mut3                   │
00:03:23 #4329 [Verbose] > │     while method28(v289, v291) do                                            │
00:03:23 #4330 [Verbose] > │         let v293 : uint64 = v291.l0                                          │
00:03:23 #4331 [Verbose] > │         let struct (v294 : UH5, v295 : int32) = v291.l1, v291.l2             │
00:03:23 #4332 [Verbose] > │         let v296 : int64 = v267.[int v293]                                   │
00:03:23 #4333 [Verbose] > │         let v297 : int32 = v295 + 1                                          │
00:03:23 #4334 [Verbose] > │         let v298 : uint64 = v293 + 1UL                                       │
00:03:23 #4335 [Verbose] > │         let v299 : UH5 = UH5_0(v295, v296, v294)                             │
00:03:23 #4336 [Verbose] > │         v291.l0 <- v298                                                      │
00:03:23 #4337 [Verbose] > │         v291.l1 <- v299                                                      │
00:03:23 #4338 [Verbose] > │         v291.l2 <- v297                                                      │
00:03:23 #4339 [Verbose] > │         ()                                                                   │
00:03:23 #4340 [Verbose] > │     let struct (v300 : UH5, v301 : int32) = v291.l1, v291.l2                 │
00:03:23 #4341 [Verbose] > │     let v302 : UH5 = UH5_1                                                   │
00:03:23 #4342 [Verbose] > │     let v303 : UH5 = method29(v300, v302)                                    │
00:03:23 #4343 [Verbose] > │     let v304 : (struct (int32 * int64) []) = method30(v303)                  │
00:03:23 #4344 [Verbose] > │     let v305 : Map<int32, int64> = v304 |> Array.map (fun (struct (a, b)) -> │
00:03:23 #4345 [Verbose] > │ a, b) |> Map.ofArray                                                         │
00:03:23 #4346 [Verbose] > │     let v306 : (struct ((string []) * US1) []) = Array.zeroCreate<struct     │
00:03:23 #4347 [Verbose] > │ ((string []) * US1)> (System.Convert.ToInt32(v256))                          │
00:03:23 #4348 [Verbose] > │     let v307 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4349 [Verbose] > │     while method6(v256, v307) do                                             │
00:03:23 #4350 [Verbose] > │         let v309 : uint64 = v307.l0                                          │
00:03:23 #4351 [Verbose] > │         let struct (v310 : UH2, v311 : US1) = v243.[int v309]                │
00:03:23 #4352 [Verbose] > │         let v312 : UH6 = UH6_1                                               │
00:03:23 #4353 [Verbose] > │         let v313 : int32 = 0                                                 │
00:03:23 #4354 [Verbose] > │         let struct (v314 : UH6, v315 : int32) = method33(v310, v312, v313)   │
00:03:23 #4355 [Verbose] > │         let v316 : UH6 = UH6_1                                               │
00:03:23 #4356 [Verbose] > │         let v317 : UH6 = method34(v314, v316)                                │
00:03:23 #4357 [Verbose] > │         let v318 : UH2 = UH2_1                                               │
00:03:23 #4358 [Verbose] > │         let v319 : UH2 = method35(v305, v317, v318)                          │
00:03:23 #4359 [Verbose] > │         let v320 : (string []) = method36(v319)                              │
00:03:23 #4360 [Verbose] > │         v306.[int v309] <- struct (v320, v311)                               │
00:03:23 #4361 [Verbose] > │         let v321 : uint64 = v309 + 1UL                                       │
00:03:23 #4362 [Verbose] > │         v307.l0 <- v321                                                      │
00:03:23 #4363 [Verbose] > │         ()                                                                   │
00:03:23 #4364 [Verbose] > │     System.Console.WriteLine v35                                             │
00:03:23 #4365 [Verbose] > │     let v322 : uint64 = System.Convert.ToUInt64 v306.Length                  │
00:03:23 #4366 [Verbose] > │     let v323 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4367 [Verbose] > │     while method6(v322, v323) do                                             │
00:03:23 #4368 [Verbose] > │         let v325 : uint64 = v323.l0                                          │
00:03:23 #4369 [Verbose] > │         let struct (v326 : (string []), v327 : US1) = v306.[int v325]        │
00:03:23 #4370 [Verbose] > │         match v327 with                                                      │
00:03:23 #4371 [Verbose] > │         | US1_0 -> (* None *)                                                │
00:03:23 #4372 [Verbose] > │             let mutable result = None                                        │
00:03:23 #4373 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:23 #4374 [Verbose] > │             #if !WASM                                                        │
00:03:23 #4375 [Verbose] > │             ()                                                               │
00:03:23 #4376 [Verbose] > │             #else                                                            │
00:03:23 #4377 [Verbose] > │             ()                                                               │
00:03:23 #4378 [Verbose] > │             #endif                                                           │
00:03:23 #4379 [Verbose] > │             #else                                                            │
00:03:23 #4380 [Verbose] > │             System.Console.ResetColor ()                                     │
00:03:23 #4381 [Verbose] > │             ()                                                               │
00:03:23 #4382 [Verbose] > │             #endif                                                           │
00:03:23 #4383 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:23 #4384 [Verbose] > │             result |> Option.get                                             │
00:03:23 #4385 [Verbose] > │             ()                                                               │
00:03:23 #4386 [Verbose] > │         | US1_1(v328) -> (* Some *)                                          │
00:03:23 #4387 [Verbose] > │             let mutable result = None                                        │
00:03:23 #4388 [Verbose] > │             #if FABLE_COMPILER_RUST                                          │
00:03:23 #4389 [Verbose] > │             #if !WASM                                                        │
00:03:23 #4390 [Verbose] > │             ()                                                               │
00:03:23 #4391 [Verbose] > │             #else                                                            │
00:03:23 #4392 [Verbose] > │             ()                                                               │
00:03:23 #4393 [Verbose] > │             #endif                                                           │
00:03:23 #4394 [Verbose] > │             #else                                                            │
00:03:23 #4395 [Verbose] > │             System.Console.ForegroundColor <- v328                           │
00:03:23 #4396 [Verbose] > │             ()                                                               │
00:03:23 #4397 [Verbose] > │             #endif                                                           │
00:03:23 #4398 [Verbose] > │             |> fun x -> result <- Some x                                     │
00:03:23 #4399 [Verbose] > │             result |> Option.get                                             │
00:03:23 #4400 [Verbose] > │             ()                                                               │
00:03:23 #4401 [Verbose] > │         let v329 : string = "\t| "                                           │
00:03:23 #4402 [Verbose] > │         let v330 : string = System.String.Join (v329, v326)                  │
00:03:23 #4403 [Verbose] > │         System.Console.WriteLine v330                                        │
00:03:23 #4404 [Verbose] > │         let mutable result = None                                            │
00:03:23 #4405 [Verbose] > │         #if FABLE_COMPILER_RUST                                              │
00:03:23 #4406 [Verbose] > │         #if !WASM                                                            │
00:03:23 #4407 [Verbose] > │         ()                                                                   │
00:03:23 #4408 [Verbose] > │         #else                                                                │
00:03:23 #4409 [Verbose] > │         ()                                                                   │
00:03:23 #4410 [Verbose] > │         #endif                                                               │
00:03:23 #4411 [Verbose] > │         #else                                                                │
00:03:23 #4412 [Verbose] > │         System.Console.ResetColor ()                                         │
00:03:23 #4413 [Verbose] > │         ()                                                                   │
00:03:23 #4414 [Verbose] > │         #endif                                                               │
00:03:23 #4415 [Verbose] > │         |> fun x -> result <- Some x                                         │
00:03:23 #4416 [Verbose] > │         result |> Option.get                                                 │
00:03:23 #4417 [Verbose] > │         let v331 : uint64 = v325 + 1UL                                       │
00:03:23 #4418 [Verbose] > │         v323.l0 <- v331                                                      │
00:03:23 #4419 [Verbose] > │         ()                                                                   │
00:03:23 #4420 [Verbose] > │     let v332 : ((float []) []) = Array.zeroCreate<(float [])>                │
00:03:23 #4421 [Verbose] > │ (System.Convert.ToInt32(v168))                                               │
00:03:23 #4422 [Verbose] > │     let v333 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4423 [Verbose] > │     while method6(v168, v333) do                                             │
00:03:23 #4424 [Verbose] > │         let v335 : uint64 = v333.l0                                          │
00:03:23 #4425 [Verbose] > │         let struct (v336 : string, v337 : string, v338 : string, v339 :      │
00:03:23 #4426 [Verbose] > │ (int64 [])) = v83.[int v335]                                                 │
00:03:23 #4427 [Verbose] > │         let v340 : (int64 -> float) = float                                  │
00:03:23 #4428 [Verbose] > │         let v341 : uint64 = System.Convert.ToUInt64 v339.Length              │
00:03:23 #4429 [Verbose] > │         let v342 : (float []) = Array.zeroCreate<float>                      │
00:03:23 #4430 [Verbose] > │ (System.Convert.ToInt32(v341))                                               │
00:03:23 #4431 [Verbose] > │         let v343 : Mut1 = {l0 = 0UL} : Mut1                                  │
00:03:23 #4432 [Verbose] > │         while method6(v341, v343) do                                         │
00:03:23 #4433 [Verbose] > │             let v345 : uint64 = v343.l0                                      │
00:03:23 #4434 [Verbose] > │             let v346 : int64 = v339.[int v345]                               │
00:03:23 #4435 [Verbose] > │             let v347 : float = v340 v346                                     │
00:03:23 #4436 [Verbose] > │             v342.[int v345] <- v347                                          │
00:03:23 #4437 [Verbose] > │             let v348 : uint64 = v345 + 1UL                                   │
00:03:23 #4438 [Verbose] > │             v343.l0 <- v348                                                  │
00:03:23 #4439 [Verbose] > │             ()                                                               │
00:03:23 #4440 [Verbose] > │         v332.[int v335] <- v342                                              │
00:03:23 #4441 [Verbose] > │         let v349 : uint64 = v335 + 1UL                                       │
00:03:23 #4442 [Verbose] > │         v333.l0 <- v349                                                      │
00:03:23 #4443 [Verbose] > │         ()                                                                   │
00:03:23 #4444 [Verbose] > │     let v350 : ((float []) []) = v332 |> Array.transpose                     │
00:03:23 #4445 [Verbose] > │     let v351 : uint64 = System.Convert.ToUInt64 v350.Length                  │
00:03:23 #4446 [Verbose] > │     let v352 : (float []) = Array.zeroCreate<float>                          │
00:03:23 #4447 [Verbose] > │ (System.Convert.ToInt32(v351))                                               │
00:03:23 #4448 [Verbose] > │     let v353 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4449 [Verbose] > │     while method6(v351, v353) do                                             │
00:03:23 #4450 [Verbose] > │         let v355 : uint64 = v353.l0                                          │
00:03:23 #4451 [Verbose] > │         let v356 : (float []) = v350.[int v355]                              │
00:03:23 #4452 [Verbose] > │         let v357 : float = v356 |> Array.average                             │
00:03:23 #4453 [Verbose] > │         v352.[int v355] <- v357                                              │
00:03:23 #4454 [Verbose] > │         let v358 : uint64 = v355 + 1UL                                       │
00:03:23 #4455 [Verbose] > │         v353.l0 <- v358                                                      │
00:03:23 #4456 [Verbose] > │         ()                                                                   │
00:03:23 #4457 [Verbose] > │     let v359 : (float -> int64) = int64                                      │
00:03:23 #4458 [Verbose] > │     let v360 : uint64 = System.Convert.ToUInt64 v352.Length                  │
00:03:23 #4459 [Verbose] > │     let v361 : (int64 []) = Array.zeroCreate<int64>                          │
00:03:23 #4460 [Verbose] > │ (System.Convert.ToInt32(v360))                                               │
00:03:23 #4461 [Verbose] > │     let v362 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4462 [Verbose] > │     while method6(v360, v362) do                                             │
00:03:23 #4463 [Verbose] > │         let v364 : uint64 = v362.l0                                          │
00:03:23 #4464 [Verbose] > │         let v365 : float = v352.[int v364]                                   │
00:03:23 #4465 [Verbose] > │         let v366 : int64 = v359 v365                                         │
00:03:23 #4466 [Verbose] > │         v361.[int v364] <- v366                                              │
00:03:23 #4467 [Verbose] > │         let v367 : uint64 = v364 + 1UL                                       │
00:03:23 #4468 [Verbose] > │         v362.l0 <- v367                                                      │
00:03:23 #4469 [Verbose] > │         ()                                                                   │
00:03:23 #4470 [Verbose] > │     let v368 : uint64 = System.Convert.ToUInt64 v361.Length                  │
00:03:23 #4471 [Verbose] > │     let v369 : UH5 = UH5_1                                                   │
00:03:23 #4472 [Verbose] > │     let v370 : Mut3 = {l0 = 0UL; l1 = v369; l2 = 0} : Mut3                   │
00:03:23 #4473 [Verbose] > │     while method28(v368, v370) do                                            │
00:03:23 #4474 [Verbose] > │         let v372 : uint64 = v370.l0                                          │
00:03:23 #4475 [Verbose] > │         let struct (v373 : UH5, v374 : int32) = v370.l1, v370.l2             │
00:03:23 #4476 [Verbose] > │         let v375 : int64 = v361.[int v372]                                   │
00:03:23 #4477 [Verbose] > │         let v376 : int32 = v374 + 1                                          │
00:03:23 #4478 [Verbose] > │         let v377 : uint64 = v372 + 1UL                                       │
00:03:23 #4479 [Verbose] > │         let v378 : UH5 = UH5_0(v374, v375, v373)                             │
00:03:23 #4480 [Verbose] > │         v370.l0 <- v377                                                      │
00:03:23 #4481 [Verbose] > │         v370.l1 <- v378                                                      │
00:03:23 #4482 [Verbose] > │         v370.l2 <- v376                                                      │
00:03:23 #4483 [Verbose] > │         ()                                                                   │
00:03:23 #4484 [Verbose] > │     let struct (v379 : UH5, v380 : int32) = v370.l1, v370.l2                 │
00:03:23 #4485 [Verbose] > │     let v381 : UH5 = UH5_1                                                   │
00:03:23 #4486 [Verbose] > │     let v382 : UH5 = method29(v379, v381)                                    │
00:03:23 #4487 [Verbose] > │     let v383 : (struct (int32 * int64) []) = method39(v382)                  │
00:03:23 #4488 [Verbose] > │     System.Console.WriteLine v35                                             │
00:03:23 #4489 [Verbose] > │     let v384 : string = "Average Ranking  "                                  │
00:03:23 #4490 [Verbose] > │     System.Console.WriteLine v384                                            │
00:03:23 #4491 [Verbose] > │     let v385 : (struct (int32 * int64) -> int64) = closure8()                │
00:03:23 #4492 [Verbose] > │     let v386 : (struct (int32 * int64) []) = v383 |> Array.sortBy v385       │
00:03:23 #4493 [Verbose] > │     let v387 : uint64 = System.Convert.ToUInt64 v386.Length                  │
00:03:23 #4494 [Verbose] > │     let v388 : Mut1 = {l0 = 0UL} : Mut1                                      │
00:03:23 #4495 [Verbose] > │     while method6(v387, v388) do                                             │
00:03:23 #4496 [Verbose] > │         let v390 : uint64 = v388.l0                                          │
00:03:23 #4497 [Verbose] > │         let struct (v391 : int32, v392 : int64) = v386.[int v390]            │
00:03:23 #4498 [Verbose] > │         let v393 : string = $"Test case %d{v391 + 1}. Average Time: %A{v392} │
00:03:23 #4499 [Verbose] > │ "                                                                            │
00:03:23 #4500 [Verbose] > │         System.Console.WriteLine v393                                        │
00:03:23 #4501 [Verbose] > │         let v394 : uint64 = v390 + 1UL                                       │
00:03:23 #4502 [Verbose] > │         v388.l0 <- v394                                                      │
00:03:23 #4503 [Verbose] > │         ()                                                                   │
00:03:23 #4504 [Verbose] > │     ()                                                                       │
00:03:23 #4505 [Verbose] > │ method0()                                                                    │
00:03:23 #4506 [Verbose] > │                                                                              │
00:03:23 #4507 [Verbose] > │                                                                              │
00:03:23 #4508 [Verbose] > │                                                                              │
00:03:23 #4509 [Verbose] > │ Test: v33                                                                    │
00:03:23 #4510 [Verbose] > │                                                                              │
00:03:23 #4511 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)                            │
00:03:23 #4512 [Verbose] > │ Test case 1. semi_open_1. Time: 189                                          │
00:03:23 #4513 [Verbose] > │ Test case 2. closed_1. Time: 337                                             │
00:03:23 #4514 [Verbose] > │ Test case 3. semi_open_2. Time: 127                                          │
00:03:23 #4515 [Verbose] > │ Test case 4. closed_2. Time: 130                                             │
00:03:23 #4516 [Verbose] > │                                                                              │
00:03:23 #4517 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)                            │
00:03:23 #4518 [Verbose] > │ Test case 1. semi_open_1. Time: 135                                          │
00:03:23 #4519 [Verbose] > │ Test case 2. closed_1. Time: 80                                              │
00:03:23 #4520 [Verbose] > │ Test case 3. semi_open_2. Time: 78                                           │
00:03:23 #4521 [Verbose] > │ Test case 4. closed_2. Time: 81                                              │
00:03:23 #4522 [Verbose] > │                                                                              │
00:03:23 #4523 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)                           │
00:03:23 #4524 [Verbose] > │ Test case 1. semi_open_1. Time: 80                                           │
00:03:23 #4525 [Verbose] > │ Test case 2. closed_1. Time: 81                                              │
00:03:23 #4526 [Verbose] > │ Test case 3. semi_open_2. Time: 66                                           │
00:03:23 #4527 [Verbose] > │ Test case 4. closed_2. Time: 69                                              │
00:03:23 #4528 [Verbose] > │                                                                              │
00:03:23 #4529 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)                           │
00:03:23 #4530 [Verbose] > │ Test case 1. semi_open_1. Time: 66                                           │
00:03:23 #4531 [Verbose] > │ Test case 2. closed_1. Time: 67                                              │
00:03:23 #4532 [Verbose] > │ Test case 3. semi_open_2. Time: 67                                           │
00:03:23 #4533 [Verbose] > │ Test case 4. closed_2. Time: 71                                              │
00:03:23 #4534 [Verbose] > │                                                                              │
00:03:23 #4535 [Verbose] > │ Solution: struct ([|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16;   │
00:03:23 #4536 [Verbose] > │ 17; 18; 19; 20;                                                              │
00:03:23 #4537 [Verbose] > │           21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36;    │
00:03:23 #4538 [Verbose] > │ 37; 38;                                                                      │
00:03:23 #4539 [Verbose] > │           39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54;    │
00:03:23 #4540 [Verbose] > │ 55; 56;                                                                      │
00:03:23 #4541 [Verbose] > │           57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72;    │
00:03:23 #4542 [Verbose] > │ 73; 74;                                                                      │
00:03:23 #4543 [Verbose] > │           75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90;    │
00:03:23 #4544 [Verbose] > │ 91; 92;                                                                      │
00:03:23 #4545 [Verbose] > │           93; 94; 95; 96; 97; 98; 99; 100|], 60, 100)                        │
00:03:23 #4546 [Verbose] > │ Test case 1. semi_open_1. Time: 81                                           │
00:03:23 #4547 [Verbose] > │ Test case 2. closed_1. Time: 83                                              │
00:03:23 #4548 [Verbose] > │ Test case 3. semi_open_2. Time: 81                                           │
00:03:23 #4549 [Verbose] > │ Test case 4. closed_2. Time: 84                                              │
00:03:23 #4550 [Verbose] > │                                                                              │
00:03:23 #4551 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)                            │
00:03:23 #4552 [Verbose] > │ Test case 1. semi_open_1. Time: 60                                           │
00:03:23 #4553 [Verbose] > │ Test case 2. closed_1. Time: 62                                              │
00:03:23 #4554 [Verbose] > │ Test case 3. semi_open_2. Time: 59                                           │
00:03:23 #4555 [Verbose] > │ Test case 4. closed_2. Time: 58                                              │
00:03:23 #4556 [Verbose] > │                                                                              │
00:03:23 #4557 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)                            │
00:03:23 #4558 [Verbose] > │ Test case 1. semi_open_1. Time: 64                                           │
00:03:23 #4559 [Verbose] > │ Test case 2. closed_1. Time: 69                                              │
00:03:23 #4560 [Verbose] > │ Test case 3. semi_open_2. Time: 79                                           │
00:03:23 #4561 [Verbose] > │ Test case 4. closed_2. Time: 81                                              │
00:03:23 #4562 [Verbose] > │                                                                              │
00:03:23 #4563 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)                           │
00:03:23 #4564 [Verbose] > │ Test case 1. semi_open_1. Time: 82                                           │
00:03:23 #4565 [Verbose] > │ Test case 2. closed_1. Time: 81                                              │
00:03:23 #4566 [Verbose] > │ Test case 3. semi_open_2. Time: 80                                           │
00:03:23 #4567 [Verbose] > │ Test case 4. closed_2. Time: 81                                              │
00:03:23 #4568 [Verbose] > │                                                                              │
00:03:23 #4569 [Verbose] > │ Solution: struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)                           │
00:03:23 #4570 [Verbose] > │ Test case 1. semi_open_1. Time: 73                                           │
00:03:23 #4571 [Verbose] > │ Test case 2. closed_1. Time: 73                                              │
00:03:23 #4572 [Verbose] > │ Test case 3. semi_open_2. Time: 74                                           │
00:03:23 #4573 [Verbose] > │ Test case 4. closed_2. Time: 76                                              │
00:03:23 #4574 [Verbose] > │                                                                              │
00:03:23 #4575 [Verbose] > │ Solution: struct ([|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16;   │
00:03:23 #4576 [Verbose] > │ 17; 18; 19; 20;                                                              │
00:03:23 #4577 [Verbose] > │           21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36;    │
00:03:23 #4578 [Verbose] > │ 37; 38;                                                                      │
00:03:23 #4579 [Verbose] > │           39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54;    │
00:03:23 #4580 [Verbose] > │ 55; 56;                                                                      │
00:03:23 #4581 [Verbose] > │           57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72;    │
00:03:23 #4582 [Verbose] > │ 73; 74;                                                                      │
00:03:23 #4583 [Verbose] > │           75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90;    │
00:03:23 #4584 [Verbose] > │ 91; 92;                                                                      │
00:03:23 #4585 [Verbose] > │           93; 94; 95; 96; 97; 98; 99; 100|], 60, 100)                        │
00:03:23 #4586 [Verbose] > │ Test case 1. semi_open_1. Time: 95                                           │
00:03:23 #4587 [Verbose] > │ Test case 2. closed_1. Time: 105                                             │
00:03:23 #4588 [Verbose] > │ Test case 3. semi_open_2. Time: 95                                           │
00:03:23 #4589 [Verbose] > │ Test case 4. closed_2. Time: 99                                              │
00:03:23 #4590 [Verbose] > │                                                                              │
00:03:23 #4591 [Verbose] > │ Input                                                                        │
00:03:23 #4592 [Verbose] > │                                                                              │
00:03:23 #4593 [Verbose] > │                                                                              │
00:03:23 #4594 [Verbose] > │                                                                              │
00:03:23 #4595 [Verbose] > │  	| Expected	| Result  	| Best                                                     │
00:03:23 #4596 [Verbose] > │ ---                                                                          │
00:03:23 #4597 [Verbose] > │                                                                              │
00:03:23 #4598 [Verbose] > │                                                                              │
00:03:23 #4599 [Verbose] > │                                                                              │
00:03:23 #4600 [Verbose] > │    	| ---     	| ---     	| ---                                                    │
00:03:23 #4601 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)                                      │
00:03:23 #4602 [Verbose] > │                                                                              │
00:03:23 #4603 [Verbose] > │                                                                              │
00:03:23 #4604 [Verbose] > │                                                                              │
00:03:23 #4605 [Verbose] > │ | US0_1 3 	| US0_1 3 	| struct (3L, 127L)                                        │
00:03:23 #4606 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)                                      │
00:03:23 #4607 [Verbose] > │                                                                              │
00:03:23 #4608 [Verbose] > │                                                                              │
00:03:23 #4609 [Verbose] > │                                                                              │
00:03:23 #4610 [Verbose] > │ | US0_1 0 	| US0_1 0 	| struct (3L, 78L)                                         │
00:03:23 #4611 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)                                     │
00:03:23 #4612 [Verbose] > │                                                                              │
00:03:23 #4613 [Verbose] > │                                                                              │
00:03:23 #4614 [Verbose] > │                                                                              │
00:03:23 #4615 [Verbose] > │ | US0_1 6 	| US0_1 6 	| struct (3L, 66L)                                         │
00:03:23 #4616 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)                                     │
00:03:23 #4617 [Verbose] > │                                                                              │
00:03:23 #4618 [Verbose] > │                                                                              │
00:03:23 #4619 [Verbose] > │                                                                              │
00:03:23 #4620 [Verbose] > │ | US0_0   	| US0_0   	| struct (1L, 66L)                                         │
00:03:23 #4621 [Verbose] > │ struct ([|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; │
00:03:23 #4622 [Verbose] > │ 20;                                                                          │
00:03:23 #4623 [Verbose] > │           21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36;    │
00:03:23 #4624 [Verbose] > │ 37; 38;                                                                      │
00:03:23 #4625 [Verbose] > │           39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54;    │
00:03:23 #4626 [Verbose] > │ 55; 56;                                                                      │
00:03:23 #4627 [Verbose] > │           57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72;    │
00:03:23 #4628 [Verbose] > │ 73; 74;                                                                      │
00:03:23 #4629 [Verbose] > │           75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90;    │
00:03:23 #4630 [Verbose] > │ 91; 92;                                                                      │
00:03:23 #4631 [Verbose] > │           93; 94; 95; 96; 97; 98; 99; 100|], 60, 100)	| US0_1 59	| US0_1 59	|      │
00:03:23 #4632 [Verbose] > │ struct (1L, 81L)                                                             │
00:03:23 #4633 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)                                      │
00:03:23 #4634 [Verbose] > │                                                                              │
00:03:23 #4635 [Verbose] > │                                                                              │
00:03:23 #4636 [Verbose] > │                                                                              │
00:03:23 #4637 [Verbose] > │ | US0_1 3 	| US0_1 3 	| struct (4L, 58L)                                         │
00:03:23 #4638 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)                                      │
00:03:23 #4639 [Verbose] > │                                                                              │
00:03:23 #4640 [Verbose] > │                                                                              │
00:03:23 #4641 [Verbose] > │                                                                              │
00:03:23 #4642 [Verbose] > │ | US0_1 0 	| US0_1 0 	| struct (1L, 64L)                                         │
00:03:23 #4643 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)                                     │
00:03:23 #4644 [Verbose] > │                                                                              │
00:03:23 #4645 [Verbose] > │                                                                              │
00:03:23 #4646 [Verbose] > │                                                                              │
00:03:23 #4647 [Verbose] > │ | US0_1 6 	| US0_1 6 	| struct (3L, 80L)                                         │
00:03:23 #4648 [Verbose] > │ struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)                                     │
00:03:23 #4649 [Verbose] > │                                                                              │
00:03:23 #4650 [Verbose] > │                                                                              │
00:03:23 #4651 [Verbose] > │                                                                              │
00:03:23 #4652 [Verbose] > │ | US0_0   	| US0_0   	| struct (1L, 73L)                                         │
00:03:23 #4653 [Verbose] > │ struct ([|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; │
00:03:23 #4654 [Verbose] > │ 20;                                                                          │
00:03:23 #4655 [Verbose] > │           21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36;    │
00:03:23 #4656 [Verbose] > │ 37; 38;                                                                      │
00:03:23 #4657 [Verbose] > │           39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54;    │
00:03:23 #4658 [Verbose] > │ 55; 56;                                                                      │
00:03:23 #4659 [Verbose] > │           57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72;    │
00:03:23 #4660 [Verbose] > │ 73; 74;                                                                      │
00:03:23 #4661 [Verbose] > │           75; 76; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90;    │
00:03:23 #4662 [Verbose] > │ 91; 92;                                                                      │
00:03:23 #4663 [Verbose] > │           93; 94; 95; 96; 97; 98; 99; 100|], 60, 100)	| US0_1 59	| US0_1 59	|      │
00:03:23 #4664 [Verbose] > │ struct (1L, 95L)                                                             │
00:03:23 #4665 [Verbose] > │                                                                              │
00:03:23 #4666 [Verbose] > │ Average Ranking                                                              │
00:03:23 #4667 [Verbose] > │ Test case 3. Average Time: 80L                                               │
00:03:23 #4668 [Verbose] > │ Test case 4. Average Time: 83L                                               │
00:03:23 #4669 [Verbose] > │ Test case 1. Average Time: 92L                                               │
00:03:23 #4670 [Verbose] > │ Test case 2. Average Time: 103L                                              │
00:03:23 #4671 [Verbose] > │                                                                              │
00:03:23 #4672 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:23 #4673 [Verbose] >
00:03:23 #4674 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:23 #4675 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:23 #4676 [Verbose] > │ ## returnLettersWithOddCountTests                                            │
00:03:23 #4677 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:23 #4678 [Verbose] >
00:03:23 #4679 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:23 #4680 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:23 #4681 [Verbose] > │ Test: ReturnLettersWithOddCount                                              │
00:03:23 #4682 [Verbose] > │                                                                              │
00:03:23 #4683 [Verbose] > │ Solution: 1                                                                  │
00:03:23 #4684 [Verbose] > │ Test case 1. A. Time: 645L                                                   │
00:03:23 #4685 [Verbose] > │                                                                              │
00:03:23 #4686 [Verbose] > │ Solution: 2                                                                  │
00:03:23 #4687 [Verbose] > │ Test case 1. A. Time: 663L                                                   │
00:03:23 #4688 [Verbose] > │                                                                              │
00:03:23 #4689 [Verbose] > │ Solution: 3                                                                  │
00:03:23 #4690 [Verbose] > │ Test case 1. A. Time: 680L                                                   │
00:03:23 #4691 [Verbose] > │                                                                              │
00:03:23 #4692 [Verbose] > │ Solution: 9                                                                  │
00:03:23 #4693 [Verbose] > │ Test case 1. A. Time: 730L                                                   │
00:03:23 #4694 [Verbose] > │                                                                              │
00:03:23 #4695 [Verbose] > │ Solution: 10                                                                 │
00:03:23 #4696 [Verbose] > │ Test case 1. A. Time: 815L                                                   │
00:03:23 #4697 [Verbose] > │                                                                              │
00:03:23 #4698 [Verbose] > │ Input   | Expected        | Result          | Best                           │
00:03:23 #4699 [Verbose] > │ ---     | ---             | ---             | ---                            │
00:03:23 #4700 [Verbose] > │ 1       | a               | a               | (1, 645)                       │
00:03:23 #4701 [Verbose] > │ 2       | ba              | ba              | (1, 663)                       │
00:03:23 #4702 [Verbose] > │ 3       | aaa             | aaa             | (1, 680)                       │
00:03:23 #4703 [Verbose] > │ 9       | aaaaaaaaa       | aaaaaaaaa       | (1, 730)                       │
00:03:23 #4704 [Verbose] > │ 10      | baaaaaaaaa      | baaaaaaaaa      | (1, 815)                       │
00:03:23 #4705 [Verbose] > │                                                                              │
00:03:23 #4706 [Verbose] > │ Averages                                                                     │
00:03:23 #4707 [Verbose] > │ Test case 1. Average Time: 706L                                              │
00:03:23 #4708 [Verbose] > │                                                                              │
00:03:23 #4709 [Verbose] > │ Ranking                                                                      │
00:03:23 #4710 [Verbose] > │ Test case 1. Average Time: 706L                                              │
00:03:23 #4711 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:23 #4712 [Verbose] >
00:03:23 #4713 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:03:23 #4714 [Verbose] > //// test
00:03:23 #4715 [Verbose] >
00:03:23 #4716 [Verbose] > let solutions = [[
00:03:23 #4717 [Verbose] >     "A",
00:03:23 #4718 [Verbose] >     fun n ->
00:03:23 #4719 [Verbose] >         let mutable _builder = StringBuilder (new string('a', n))
00:03:23 #4720 [Verbose] >         if n % 2 = 0 then
00:03:23 #4721 [Verbose] >             _builder.[[0]] <- 'b'
00:03:23 #4722 [Verbose] >
00:03:23 #4723 [Verbose] >         _builder.ToString ()
00:03:23 #4724 [Verbose] > ]]
00:03:23 #4725 [Verbose] > let testCases = seq {
00:03:23 #4726 [Verbose] >     1, "a"
00:03:23 #4727 [Verbose] >     2, "ba"
00:03:23 #4728 [Verbose] >     3, "aaa"
00:03:23 #4729 [Verbose] >     9, "aaaaaaaaa"
00:03:23 #4730 [Verbose] >     10, "baaaaaaaaa"
00:03:23 #4731 [Verbose] > }
00:03:23 #4732 [Verbose] > let rec returnLettersWithOddCountTests =
00:03:23 #4733 [Verbose] >     runAll (nameof returnLettersWithOddCountTests) _count solutions testCases
00:03:23 #4734 [Verbose] > returnLettersWithOddCountTests
00:03:23 #4735 [Verbose] > |> sortResultList
00:03:26 #4736 [Verbose] >
00:03:26 #4737 [Verbose] > ╭─[ 2.54s - stdout ]───────────────────────────────────────────────────────────╮
00:03:26 #4738 [Verbose] > │                                                                              │
00:03:26 #4739 [Verbose] > │                                                                              │
00:03:26 #4740 [Verbose] > │ Test: returnLettersWithOddCountTests                                         │
00:03:26 #4741 [Verbose] > │                                                                              │
00:03:26 #4742 [Verbose] > │ Solution: 1                                                                  │
00:03:26 #4743 [Verbose] > │ Test case 1. A. Time: 336L                                                   │
00:03:26 #4744 [Verbose] > │                                                                              │
00:03:26 #4745 [Verbose] > │ Solution: 2                                                                  │
00:03:26 #4746 [Verbose] > │ Test case 1. A. Time: 410L                                                   │
00:03:26 #4747 [Verbose] > │                                                                              │
00:03:26 #4748 [Verbose] > │ Solution: 3                                                                  │
00:03:26 #4749 [Verbose] > │ Test case 1. A. Time: 379L                                                   │
00:03:26 #4750 [Verbose] > │                                                                              │
00:03:26 #4751 [Verbose] > │ Solution: 9                                                                  │
00:03:26 #4752 [Verbose] > │ Test case 1. A. Time: 361L                                                   │
00:03:26 #4753 [Verbose] > │                                                                              │
00:03:26 #4754 [Verbose] > │ Solution: 10                                                                 │
00:03:26 #4755 [Verbose] > │ Test case 1. A. Time: 363L                                                   │
00:03:26 #4756 [Verbose] > │                                                                              │
00:03:26 #4757 [Verbose] > │ Input	| Expected  	| Result    	| Best                                             │
00:03:26 #4758 [Verbose] > │ ---  	| ---       	| ---       	| ---                                              │
00:03:26 #4759 [Verbose] > │ 1    	| a         	| a         	| (1, 336)                                         │
00:03:26 #4760 [Verbose] > │ 2    	| ba        	| ba        	| (1, 410)                                         │
00:03:26 #4761 [Verbose] > │ 3    	| aaa       	| aaa       	| (1, 379)                                         │
00:03:26 #4762 [Verbose] > │ 9    	| aaaaaaaaa 	| aaaaaaaaa 	| (1, 361)                                         │
00:03:26 #4763 [Verbose] > │ 10   	| baaaaaaaaa	| baaaaaaaaa	| (1, 363)                                         │
00:03:26 #4764 [Verbose] > │                                                                              │
00:03:26 #4765 [Verbose] > │ Average Ranking                                                              │
00:03:26 #4766 [Verbose] > │ Test case 1. Average Time: 369L                                              │
00:03:26 #4767 [Verbose] > │                                                                              │
00:03:26 #4768 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:26 #4769 [Verbose] >
00:03:26 #4770 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 #4771 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:26 #4772 [Verbose] > │ ## hasAnyPairCloseToEachotherTests                                           │
00:03:26 #4773 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:26 #4774 [Verbose] >
00:03:26 #4775 [Verbose] > ── markdown ────────────────────────────────────────────────────────────────────
00:03:26 #4776 [Verbose] > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:26 #4777 [Verbose] > │ Test: HasAnyPairCloseToEachother                                             │
00:03:26 #4778 [Verbose] > │                                                                              │
00:03:26 #4779 [Verbose] > │ Solution: 0                                                                  │
00:03:26 #4780 [Verbose] > │ Test case 1. A. Time: 137L                                                   │
00:03:26 #4781 [Verbose] > │                                                                              │
00:03:26 #4782 [Verbose] > │ Solution: 1,2                                                                │
00:03:26 #4783 [Verbose] > │ Test case 1. A. Time: 186L                                                   │
00:03:26 #4784 [Verbose] > │                                                                              │
00:03:26 #4785 [Verbose] > │ Solution: 3,5                                                                │
00:03:26 #4786 [Verbose] > │ Test case 1. A. Time: 206L                                                   │
00:03:26 #4787 [Verbose] > │                                                                              │
00:03:26 #4788 [Verbose] > │ Solution: 3,4,6                                                              │
00:03:26 #4789 [Verbose] > │ Test case 1. A. Time: 149L                                                   │
00:03:26 #4790 [Verbose] > │                                                                              │
00:03:26 #4791 [Verbose] > │ Solution: 2,4,6                                                              │
00:03:26 #4792 [Verbose] > │ Test case 1. A. Time: 150L                                                   │
00:03:26 #4793 [Verbose] > │                                                                              │
00:03:26 #4794 [Verbose] > │ Input   | Expected        | Result  | Best                                   │
00:03:26 #4795 [Verbose] > │ ---     | ---             | ---     | ---                                    │
00:03:26 #4796 [Verbose] > │ 0       | False           | False   | (1, 137)                               │
00:03:26 #4797 [Verbose] > │ 1,2     | True            | True    | (1, 186)                               │
00:03:26 #4798 [Verbose] > │ 3,5     | False           | False   | (1, 206)                               │
00:03:26 #4799 [Verbose] > │ 3,4,6   | True            | True    | (1, 149)                               │
00:03:26 #4800 [Verbose] > │ 2,4,6   | False           | False   | (1, 150)                               │
00:03:26 #4801 [Verbose] > │                                                                              │
00:03:26 #4802 [Verbose] > │ Averages                                                                     │
00:03:26 #4803 [Verbose] > │ Test case 1. Average Time: 165L                                              │
00:03:26 #4804 [Verbose] > │                                                                              │
00:03:26 #4805 [Verbose] > │ Ranking                                                                      │
00:03:26 #4806 [Verbose] > │ Test case 1. Average Time: 165L                                              │
00:03:26 #4807 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:26 #4808 [Verbose] >
00:03:26 #4809 [Verbose] > ── fsharp ──────────────────────────────────────────────────────────────────────
00:03:26 #4810 [Verbose] > //// test
00:03:26 #4811 [Verbose] >
00:03:26 #4812 [Verbose] > let solutions = [[
00:03:26 #4813 [Verbose] >     "A",
00:03:26 #4814 [Verbose] >     fun (a: int[[]]) ->
00:03:26 #4815 [Verbose] >         let indices = System.Linq.Enumerable.Range(0, a.Length) |>
00:03:26 #4816 [Verbose] > System.Linq.Enumerable.ToArray
00:03:26 #4817 [Verbose] >         System.Array.Sort (a, indices)
00:03:26 #4818 [Verbose] >
00:03:26 #4819 [Verbose] >         indices
00:03:26 #4820 [Verbose] >         |> Array.take (a.Length - 1)
00:03:26 #4821 [Verbose] >         |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1)
00:03:26 #4822 [Verbose] > ]]
00:03:26 #4823 [Verbose] > let testCases = seq {
00:03:26 #4824 [Verbose] >     [[| 0 |]], false
00:03:26 #4825 [Verbose] >     [[| 1; 2 |]], true
00:03:26 #4826 [Verbose] >     [[| 3; 5 |]], false
00:03:26 #4827 [Verbose] >     [[| 3; 4; 6 |]], true
00:03:26 #4828 [Verbose] >     [[| 2; 4; 6 |]], false
00:03:26 #4829 [Verbose] > }
00:03:26 #4830 [Verbose] > let rec hasAnyPairCloseToEachotherTests =
00:03:26 #4831 [Verbose] >     runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases
00:03:26 #4832 [Verbose] > hasAnyPairCloseToEachotherTests
00:03:26 #4833 [Verbose] > |> sortResultList
00:03:27 #4834 [Verbose] >
00:03:27 #4835 [Verbose] > ╭─[ 1.10s - stdout ]───────────────────────────────────────────────────────────╮
00:03:27 #4836 [Verbose] > │                                                                              │
00:03:27 #4837 [Verbose] > │                                                                              │
00:03:27 #4838 [Verbose] > │ Test: hasAnyPairCloseToEachotherTests                                        │
00:03:27 #4839 [Verbose] > │                                                                              │
00:03:27 #4840 [Verbose] > │ Solution: 0                                                                  │
00:03:27 #4841 [Verbose] > │ Test case 1. A. Time: 137L                                                   │
00:03:27 #4842 [Verbose] > │                                                                              │
00:03:27 #4843 [Verbose] > │ Solution: 1,2                                                                │
00:03:27 #4844 [Verbose] > │ Test case 1. A. Time: 152L                                                   │
00:03:27 #4845 [Verbose] > │                                                                              │
00:03:27 #4846 [Verbose] > │ Solution: 3,5                                                                │
00:03:27 #4847 [Verbose] > │ Test case 1. A. Time: 60L                                                    │
00:03:27 #4848 [Verbose] > │                                                                              │
00:03:27 #4849 [Verbose] > │ Solution: 3,4,6                                                              │
00:03:27 #4850 [Verbose] > │ Test case 1. A. Time: 64L                                                    │
00:03:27 #4851 [Verbose] > │                                                                              │
00:03:27 #4852 [Verbose] > │ Solution: 2,4,6                                                              │
00:03:27 #4853 [Verbose] > │ Test case 1. A. Time: 66L                                                    │
00:03:27 #4854 [Verbose] > │                                                                              │
00:03:27 #4855 [Verbose] > │ Input	| Expected	| Result	| Best                                                   │
00:03:27 #4856 [Verbose] > │ ---  	| ---     	| ---   	| ---                                                    │
00:03:27 #4857 [Verbose] > │ 0    	| False   	| False 	| (1, 137)                                               │
00:03:27 #4858 [Verbose] > │ 1,2  	| True    	| True  	| (1, 152)                                               │
00:03:27 #4859 [Verbose] > │ 3,5  	| False   	| False 	| (1, 60)                                                │
00:03:27 #4860 [Verbose] > │ 3,4,6	| True    	| True  	| (1, 64)                                                │
00:03:27 #4861 [Verbose] > │ 2,4,6	| False   	| False 	| (1, 66)                                                │
00:03:27 #4862 [Verbose] > │                                                                              │
00:03:27 #4863 [Verbose] > │ Average Ranking                                                              │
00:03:27 #4864 [Verbose] > │ Test case 1. Average Time: 95L                                               │
00:03:27 #4865 [Verbose] > │                                                                              │
00:03:27 #4866 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:27 #4867 [Verbose] >
00:03:27 #4868 [Verbose] > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 #4869 [Verbose] > // // test
00:03:27 #4870 [Verbose] >
00:03:27 #4871 [Verbose] > ()
00:03:27 #4872 [Verbose] > Building /tmp/!dotnet-repl/20240226-2117-0725-2557-21ca09ce0530/main.spi
00:03:27 #4873 [Verbose] >
00:03:27 #4874 [Verbose] > ╭─[ 120.95ms - stdout ]────────────────────────────────────────────────────────╮
00:03:27 #4875 [Verbose] > │ let rec method0 () : unit =                                                  │
00:03:27 #4876 [Verbose] > │     ()                                                                       │
00:03:27 #4877 [Verbose] > │ method0()                                                                    │
00:03:27 #4878 [Verbose] > │                                                                              │
00:03:27 #4879 [Verbose] > │                                                                              │
00:03:27 #4880 [Verbose] > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:28 #4881 [Verbose] > [NbConvertApp] Converting notebook Perf.dib.ipynb to html
00:03:28 #4882 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:03:28 #4883 [Verbose] >   validate(nb)
00:03:28 #4884 [Verbose] > /opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:03:28 #4885 [Verbose] >   return _pygments_highlight(
00:03:29 #4886 [Verbose] > [NbConvertApp] Writing 556013 bytes to Perf.dib.html
00:03:29 #4887 [Debug] executeAsync / exitCode: 0 / output.Length: 447174
00:03:29 #4888 [Debug] main / executeCommand / exitCode: 0
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: Perf.dib
00:00:00 #2 [Debug] parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ . "$ScriptDir/../apps/dir-tree-html/build.ps1" } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # DirTreeHtml (Polyglot)                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Notebooks.dib
#!import ../../lib/fsharp/Testing.dib

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Asp
NetCore.Html.Abstractions.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.Formatting.dll"
open System
open System.IO
open System.Text
open Microsoft.DotNet.Interactive.Formatting

── fsharp - import ─────────────────────────────────────────────────────────────
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.FSharp.dll"
open Microsoft.DotNet.Interactive.FSharp.FSharpKernelHelpers
#r 
"/home/runner/.nuget/packages/dotnet-repl/0.1.204/tools/net7.0/any/Microsoft.Dot
Net.Interactive.dll"
open type Microsoft.DotNet.Interactive.Kernel

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

Formatter.ListExpansionLimit <- 100

── fsharp - import ─────────────────────────────────────────────────────────────
#r @"../../../../../../../.nuget/packages/expecto/10.1.0/lib/net6.0/Expecto.dll"

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

type AssertExceptionFormatter (ex) =
    member _.Text =
        ex.ToString()
            .Replace("32m", "<span style=\"color: green;\">")
            .Replace("36m", "</span>")
            .Replace("31m", "<span style=\"color: red;\">")
            .Replace("\n", "<br/>\n")


Formatter.Register<AssertExceptionFormatter> ((fun (x : 
AssertExceptionFormatter) -> x.Text), "text/html")

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __expect fn log expected actual =
    if log then printfn $"{actual.ToDisplayString ()}"
    try
        "Testing.__expect" |> fn actual expected
    with :? Expecto.AssertException as ex ->
        AssertExceptionFormatter(ex).Display () |> ignore
        failwith (ex.GetType().FullName)

let inline __contains log expected actual = __expect Expecto.Expect.contains log
expected actual
let inline _contains expected actual = __contains true expected actual

let inline __equal log expected actual = __expect Expecto.Expect.equal log 
expected actual
let inline _equal expected actual = __equal true expected actual

let inline __isGreaterThan log expected actual = __expect 
Expecto.Expect.isGreaterThan log expected actual
let ...

── fsharp - import ─────────────────────────────────────────────────────────────
//// test

let inline __isBetween log a b actual =
    let inline isBetween actual (a, b) _ =
        __isGreaterThanOrEqual log a actual
        __isLessThanOrEqual log b actual
    __expect isBetween log (a, b) actual
let inline _isBetween a b actual = __isBetween true a b actual

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.1.5/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/system.commandline/2.0.0-beta4.22272.1/li
b/net6.0/System.CommandLine.dll"
#r 
@"../../../../../../../.nuget/packages/falco.markup/1.0.2/lib/netstandard2.0/Fal
co.Markup.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#!import ../../lib/fsharp/Common.fs
#!import ../../lib/fsharp/CommonFSharp.fs
#!import ../../lib/fsharp/Async.fs
#!import ../../lib/fsharp/AsyncSeq.fs
#!import ../../lib/fsharp/Networking.fs
#!import ../../lib/fsharp/Runtime.fs
#!import ../../lib/fsharp/FileSystem.fs

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Common =

    let nl = System.Environment.NewLine
    let q = @""""

    let inline cons head tail = head :: tail

    module String =
        let inline contains (value : string) (input : string) =
            input.Contains value

        let inline endsWith (value : string) (input : string) =
            input.EndsWith value

        let inline padLeft totalWidth paddingChar (input : string) =
            input.PadLeft (totalWidth, paddingChar)

        let inline replace (oldValue : string) (newValue : string) (input : 
string) =
            input.Replace (oldValue, newValue)

        let inline split separator (input : string) =
            input.Split separator

        let inline spli...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module CommonFSharp =

    open Common

    /// ## getUnionCaseName

    let inline getUnionCaseName<'T> (x: 'T) =
        match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
        | case, _ -> case.Name


── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Async =

    open Common

    /// ## choice

    let inline choice asyncs = async {
        let e = Event<_> ()
        use cts = new System.Threading.CancellationTokenSource ()
        let fn =
            asyncs
            |> Seq.map (fun a -> async {
                let! x = a
                e.Trigger x
            })
            |> Async.Parallel
            |> Async.Ignore
        Async.Start (fn, cts.Token)
        let! result = Async.AwaitEvent e.Publish
        cts.Cancel ()
        return result
    }

    /// ## map

    let inline map fn a = async {
        let! x = a
        return fn x
    }

    /// ## catch

    let inline catch a =
        a
        |> Async.Catch
        ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module AsyncSeq =

    open Common

    /// ## subscribeEvent

    let inline subscribeEvent (event: IEvent<'H, 'A>) map =
        let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 
'A>(event.AddHandler, event.RemoveHandler)
        System.Reactive.Linq.Observable.Select (observable, fun event -> map 
event.EventArgs)
        |> FSharp.Control.AsyncSeq.ofObservableBuffered

    let subscribeToken (token : System.Threading.CancellationToken) =
        let tcs = new System.Threading.Tasks.TaskCompletionSource ()
        System.Action tcs.SetResult |> token.Register |> ignore
        let start = System.DateTime.Now.Ticks
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun (...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Networking =

    open Common

    /// ## testPortOpen

    let inline testPortOpen port = async {
        let! ct = Async.CancellationToken
        use client = new System.Net.Sockets.TcpClient ()
        try
            do! client.ConnectAsync ("127.0.0.1", port, ct) |> 
Async.awaitValueTaskUnit
            return true
        with ex ->
            trace Verbose (fun () -> $"testPortOpen / ex: {ex |> 
printException}") getLocals
            return false
    }

    let inline testPortOpenTimeout timeout port = async {
        let! result =
            testPortOpen port
            |> Async.runWithTimeoutAsync timeout
        return
            match result with
            | None -> false
 ...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module Runtime =

    open Common

    /// ## isWindows

    let isWindows =
        fun () ->
            System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform
                System.Runtime.InteropServices.OSPlatform.Windows
        |> memoize

    /// ## getExecutableSuffix

    let inline getExecutableSuffix () =
        if isWindows ()
        then ".exe"
        else ""

    /// ## splitCommand

    type private CommandParseStep =
        | Start
        | Path of quoted: bool
        | Arguments

    let splitCommand (command: string) =
        let rec loop (path, args) chars step =
            match chars, step with
            | ('"' | '\'') :: tail, _ when path = "" -> loop (pat...

── fsharp - import ─────────────────────────────────────────────────────────────
#if !INTERACTIVE
namespace Polyglot
#endif

module FileSystem =

    open Common

    /// ## Operators

    module Operators =
        let inline (</>) a b =
            System.IO.Path.Combine (a, b)

    open Operators

    /// ## createTempDirectoryName

    let inline createTempDirectoryName () =
        let root = System.Reflection.Assembly.GetEntryAssembly().GetName().Name

        System.IO.Path.GetTempPath ()
        </> $"!{root}"
        </> string (newGuidFromDateTime System.DateTime.Now)

    /// ## createTempDirectory

    let inline createTempDirectory () =
        let tempFolder = createTempDirectoryName ()
        let result = System.IO.Directory.CreateDirectory tempFolder

        if not result.Exists then
            let ge...

── fsharp ──────────────────────────────────────────────────────────────────────
open FileSystem.Operators
open Falco.Markup

── fsharp ──────────────────────────────────────────────────────────────────────
type FileSystemNode =
    | File of string * string * int64
    | Folder of string * string * FileSystemNode list
    | Root of FileSystemNode list

let rec scanDirectory isRoot (basePath : string) (path : string) =
    let relativePath = path.Replace(basePath, "").Replace("\\", 
"/").Replace("//", "/").TrimStart '/'

    let directories =
        path
        |> System.IO.Directory.GetDirectories
        |> Array.toList
        |> List.sort
        |> List.map (scanDirectory false basePath)
    let files =
        path
        |> System.IO.Directory.GetFiles
        |> Array.toList
        |> List.sort
        |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath, 
System.IO.FileInfo(f).Length))

    let children = directories @ files
    if isRoot
    then Root children
    else Folder (path |> System.IO.Path.GetFileName, relativePath, children)

let rec generateHtml fsNode =
    let sizeLabel size =
        match float size with
        | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB"
        | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB"
        | size -> $"%.2f{size} B"
    match fsNode with
    | File (fileName, relativePath, size) ->
        Elem.div [[]] [[
            Text.raw "&#128196; "
            Elem.a [[
                Attr.href $"""{relativePath}{if relativePath = "" then "" else 
"/"}{fileName}"""
            ]] [[
                Text.raw fileName
            ]]
            Elem.span [[]] [[
                Text.raw $" ({size |> sizeLabel})"
            ]]
        ]]
    | Folder (folderName, relativePath, children) ->
        let size =
            let rec loop children =
                children
                |> List.sumBy (function
                    | File (_, _, size) -> size
                    | Folder (_, _, children)
                    | Root children -> loop children
                )
            loop children
        Elem.details [[
            Attr.open' "true"
        ]] [[
            Elem.summary [[]] [[
                Text.raw "&#128194; "
                Elem.a [[
                    Attr.href relativePath
                ]] [[
                    Text.raw folderName
                ]]
                Elem.span [[]] [[
                    Text.raw $" ({size |> sizeLabel})"
                ]]
            ]]
            Elem.div [[]] [[
                yield! children |> List.map generateHtml
            ]]
        ]]
    | Root children ->
        Elem.div [[]] [[
            yield! children |> List.map generateHtml
        ]]

let generateHtmlForFileSystem root =
    $"""<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <style>
body {{
    background-color: #222;
    color: #ccc;
}}
a {{
  color: #777;
  font-size: 15px;
}}
span {{
  font-size: 11px;
}}
div > div {{
  padding-left: 10px;
}}
details > div {{
  padding-left: 19px;
}}
  </style>
</head>
<body>
  {root |> generateHtml |> renderNode}
</body>
</html>
"""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let tempFolder = FileSystem.createTempDirectory ()
let rec loop d n = async {
    if n >= 0 then
        tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore
        do!
            n
            |> string
            |> String.replicate (n + 1)
            |> FileSystem.writeAllTextAsync (tempFolder </> d </> $"file.txt")
        do! loop $"{d}/{n}" (n - 1)
}
loop "_.root" 3
|> Async.RunSynchronously

let html =
    scanDirectory true tempFolder tempFolder
    |> generateHtmlForFileSystem

html
|> _equal """<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <style>
body {
    background-color: #222;
    color: #ccc;
}
a {
  color: #777;
  font-size: 15px;
}
span {
  font-size: 11px;
}
div > div {
  padding-left: 10px;
}
details > div {
  padding-left: 19px;
}
  </style>
</head>
<body>
  <div><details open="true"><summary>&#128194; <a href="_.root">_.root</a><span>
(10.00 B)</span></summary><div><details open="true"><summary>&#128194; <a 
href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details 
open="true"><summary>&#128194; <a href="_.root/3/2">2</a><span> (3.00 
B)</span></summary><div><details open="true"><summary>&#128194; <a 
href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>&#128196; <a 
href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 
B)</span></div></div></details><div>&#128196; <a 
href="_.root/3/2/file.txt">file.txt</a><span> (2.00 
B)</span></div></div></details><div>&#128196; <a 
href="_.root/3/file.txt">file.txt</a><span> (3.00 
B)</span></div></div></details><div>&#128196; <a 
href="_.root/file.txt">file.txt</a><span> (4.00 
B)</span></div></div></details></div>
</body>
</html>
"""

html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent

╭─[ 114.29ms - return value ]──────────────────────────────────────────────────╮
│ <!DOCTYPE html>                                                              │
│ <html lang="en">                                                             │
│ <head>                                                                       │
│   <meta charset="UTF-8">                                                     │
│   <style>                                                                    │
│ body {                                                                       │
│     background-color: #222;                                                  │
│     color: #ccc;                                                             │
│ }                                                                            │
│ a {                                                                          │
│   color: #777;                                                               │
│   font-size: 15px;                                                           │
│ }                                                                            │
│ span {                                                                       │
│   font-size: 11px;                                                           │
│ }                                                                            │
│ div > div {                                                                  │
│   padding-left: 10px;                                                        │
│ }                                                                            │
│ details > div {                                                              │
│   padding-left: 19px;                                                        │
│ }                                                                            │
│   </style>                                                                   │
│ </head>                                                                      │
│ <body>                                                                       │
│   <div><details open="true"><summary>&#128194; <a                            │
│ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details       │
│ open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00          │
│ B)</span></summary><div><details open="true"><summary>&#128194; <a           │
│ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details         │
│ open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00      │
│ B)</span></summary><div><div>&#128196; <a href="_.root...                    │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 117.76ms - stdout ]────────────────────────────────────────────────────────╮
│ <!DOCTYPE html>                                                              │
│ <html lang="en">                                                             │
│ <head>                                                                       │
│   <meta charset="UTF-8">                                                     │
│   <style>                                                                    │
│ body {                                                                       │
│     background-color: #222;                                                  │
│     color: #ccc;                                                             │
│ }                                                                            │
│ a {                                                                          │
│   color: #777;                                                               │
│   font-size: 15px;                                                           │
│ }                                                                            │
│ span {                                                                       │
│   font-size: 11px;                                                           │
│ }                                                                            │
│ div > div {                                                                  │
│   padding-left: 10px;                                                        │
│ }                                                                            │
│ details > div {                                                              │
│   padding-left: 19px;                                                        │
│ }                                                                            │
│   </style>                                                                   │
│ </head>                                                                      │
│ <body>                                                                       │
│   <div><details open="true"><summary>&#128194; <a                            │
│ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details       │
│ open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00          │
│ B)</span></summary><div><details open="true"><summary>&#128194; <a           │
│ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details         │
│ open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00      │
│ B)</span></summary><div><div>&#128196; <a                                    │
│ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00                        │
│ B)</span></div></div></details><div>&#128196; <a                             │
│ href="_.root/3/2/file.txt">file.txt</a><span> (2.00                          │
│ B)</span></div></div></details><div>&#128196; <a                             │
│ href="_.root/3/file.txt">file.txt</a><span> (3.00                            │
│ B)</span></div></div></details><div>&#128196; <a                             │
│ href="_.root/file.txt">file.txt</a><span> (4.00                              │
│ B)</span></div></div></details></div>                                        │
│ </body>                                                                      │
│ </html>                                                                      │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Arguments                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string
    | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | Dir _ -> nameof Dir
            | Html _ -> nameof Html

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

╭─[ 77.44ms - return value ]───────────────────────────────────────────────────╮
│ USAGE: dotnet [--help] --dir <string> --html <string>                        │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --dir <string>        Dir                                                │
│     --html <string>       Html                                               │
│     --help                display this list of options.                      │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## main                                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let dir =
        match argsMap.[[nameof Arguments.Dir]] with
        | [[ Arguments.Dir dir ]] -> Some dir
        | _ -> None
        |> Option.get

    let htmlPath =
        match argsMap.[[nameof Arguments.Html]] with
        | [[ Arguments.Html html ]] -> Some html
        | _ -> None
        |> Option.get

    let fileSystem = scanDirectory true dir dir
    let html = generateHtmlForFileSystem fileSystem

    html |> FileSystem.writeAllTextAsync htmlPath
    |> Async.runWithTimeout 30000
    |> function
        | Some () -> 0
        | None -> 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> Runtime.splitArgs
    |> Seq.toArray

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

╭─[ 46.62ms - return value ]───────────────────────────────────────────────────╮
│ <div class="dni-plaintext"><pre>0</pre></div><style>                         │
│ .dni-code-hint {                                                             │
│     font-style: italic;                                                      │
│     overflow: hidden;                                                        │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview {                                                              │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview td {                                                           │
│     vertical-align: top;                                                     │
│     text-align: start;                                                       │
│ }                                                                            │
│ details.dni-treeview {                                                       │
│     padding-left: 1em;                                                       │
│ }                                                                            │
│ table td {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ table tr {                                                                   │
│     vertical-align: top;                                                     │
│     margin: 0em 0px;                                                         │
│ }                                                                            │
│ table tr td pre                                                              │
│ {                                                                            │
│     vertical-align: top !important;                                          │
│     margin: 0em 0px !important;                                              │
│ }                                                                            │
│ table th {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ </style>                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯
[NbConvertApp] Converting notebook DirTreeHtml.dib.ipynb to html
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbformat/__init__.py:93: MissingIDFieldWarning: Code cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
  validate(nb)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
  return _pygments_highlight(
[NbConvertApp] Writing 308637 bytes to DirTreeHtml.dib.html
00:00:00 #1 [Debug] writeDibCode / output: Fs / path: DirTreeHtml.dib
00:00:00 #2 [Debug] parseDibCode / output: Fs / file: DirTreeHtml.dib
00:00:00 #1 [Debug] persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [lib/fsharp/Common.fs; lib/fsharp/CommonFSharp.fs; lib/fsharp/Async.fs; ... ] / name: DirTreeHtml / code.Length: 4478
00:00:00 #2 [Debug] buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj
00:00:00 #3 [Debug] executeAsync / options: { Command =
   "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64"
  WorkingDirectory =
   Some
     "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml"
  CancellationToken = None
  OnLine = None }
00:00:00 #4 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:00 #5 [Verbose] >   Determining projects to restore...
00:00:00 #6 [Verbose] >   Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483
00:00:00 #7 [Verbose] >   The last full restore is still up to date. Nothing left to do.
00:00:00 #8 [Verbose] >   Total time taken: 0 milliseconds
00:00:01 #9 [Verbose] >   Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483
00:00:01 #10 [Verbose] >   Restoring /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj
00:00:01 #11 [Verbose] >   Starting restore process.
00:00:01 #12 [Verbose] >   Total time taken: 0 milliseconds
00:00:02 #13 [Verbose] >   Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj (in 492 ms).
00:00:02 #14 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj]
00:00:06 #15 [Verbose] >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/bin/Release/net8.0/linux-x64/DirTreeHtml.dll
00:00:07 #16 [Verbose] >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist
00:00:07 #17 [Debug] executeAsync / exitCode: 0 / output.Length: 1165
00:00:07 #18 [Debug] executeAsync / options: { Command =
   "dotnet publish "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime win-x64"
  WorkingDirectory =
   Some
     "/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml"
  CancellationToken = None
  OnLine = None }
00:00:07 #19 [Verbose] > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:07 #20 [Verbose] >   Determining projects to restore...
00:00:08 #21 [Verbose] >   Restored /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj (in 300 ms).
00:00:08 #22 [Verbose] > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/DirTreeHtml.fsproj]
00:00:11 #23 [Verbose] >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/polyglot/builder/DirTreeHtml/bin/Release/net8.0/win-x64/DirTreeHtml.dll
00:00:12 #24 [Verbose] >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist
00:00:12 #25 [Debug] executeAsync / exitCode: 0 / output.Length: 753
In [ ]:
{ . "$ScriptDir/../apps/ipfs/build.ps1" } | Invoke-Block
Lockfile is up to date, resolution step is skipped
Progress: resolved 1, reused 0, downloaded 0, added 0
Packages: +495
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 495, reused 304, downloaded 161, added 465
Progress: resolved 495, reused 304, downloaded 190, added 495, done
.../node_modules/protobufjs postinstall$ node scripts/postinstall
.../node_modules/protobufjs postinstall: Done
.../esbuild@0.19.12/node_modules/esbuild postinstall$ node install.js
.../esbuild@0.19.12/node_modules/esbuild postinstall: Done

dependencies:
+ nft.storage 7.1.1

devDependencies:
+ @types/node 20.11.10
+ npm-check-updates 16.14.11
+ tsx 4.7.0
+ typescript 5.4.0-dev.20231129

Done in 2.6s
In [ ]:
{ . "$ScriptDir/outdated.ps1" } | Invoke-Block
Paket version 8.0.0-alpha002+6339fce88f07b4d959d03b78330fdb5a6d936483
Resolving dependency graph...
Could not detect any platforms from 'net9.0' in Microsoft.AspNetCore.Connections.Abstractions 9.0.0-preview.1.24081.5, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.AspNetCore.Http.Connections.Common 9.0.0-preview.1.24081.5, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.AspNetCore.Http.Connections.Client 9.0.0-preview.1.24081.5, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.AspNetCore.SignalR.Common 9.0.0-preview.1.24081.5, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.AspNetCore.SignalR.Client 9.0.0-preview.1.24081.5, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.AspNetCore.SignalR.Client.Core 9.0.0-preview.1.24081.5, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.AspNetCore.SignalR.Protocols.Json 9.0.0-preview.1.24081.5, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.Extensions.Features 9.0.0-preview.1.24081.5, please tell the package authors
Could not detect any platforms from 'net9.0' in System.IO.Pipelines 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.Extensions.Logging.Abstractions 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.Extensions.Options 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in System.Text.Json 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.Extensions.DependencyInjection 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.Extensions.Logging 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in System.Threading.Channels 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.Extensions.DependencyInjection.Abstractions 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in Microsoft.Extensions.Primitives 9.0.0-preview.1.24080.9, please tell the package authors
Could not detect any platforms from 'net9.0' in System.Text.Encodings.Web 9.0.0-preview.1.24080.9, please tell the package authors
Outdated packages found:
  Group: Main
    * Argu 6.1.5 -> 6.2.1
    * Expecto.FsCheck 10.1.0-fscheck3 -> 10.1.0
    * FsCheck 3.0.0-rc2 -> 2.16.6
    * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 9.0.0-preview.1.24081.5
    * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 9.0.0-preview.1.24081.5
    * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 9.0.0-preview.1.24081.5
    * Microsoft.AspNetCore.SignalR.Client 7.0 -> 9.0.0-preview.1.24081.5
    * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 9.0.0-preview.1.24081.5
    * Microsoft.AspNetCore.SignalR.Common 7.0 -> 9.0.0-preview.1.24081.5
    * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 9.0.0-preview.1.24081.5
    * Microsoft.Bcl.AsyncInterfaces 8.0 -> 9.0.0-preview.1.24080.9
    * Microsoft.Extensions.DependencyInjection 8.0 -> 9.0.0-preview.1.24080.9
    * Microsoft.Extensions.DependencyInjection.Abstractions 8.0 -> 9.0.0-preview.1.24080.9
    * Microsoft.Extensions.Features 7.0 -> 9.0.0-preview.1.24081.5
    * Microsoft.Extensions.Logging 8.0 -> 9.0.0-preview.1.24080.9
    * Microsoft.Extensions.Logging.Abstractions 8.0 -> 9.0.0-preview.1.24080.9
    * Microsoft.Extensions.Options 8.0.2 -> 9.0.0-preview.1.24080.9
    * Microsoft.Extensions.Primitives 8.0 -> 9.0.0-preview.1.24080.9
    * System.IO.Pipelines 8.0 -> 9.0.0-preview.1.24080.9
    * System.Threading.Channels 8.0 -> 9.0.0-preview.1.24080.9
Total time taken: 8 seconds
Paket omitted 24 warnings. You can see them in verbose mode.

CheckToml / toml: /home/runner/work/polyglot/polyglot/Cargo.toml
chat_contract_tests
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          0.8.9    0.8.9    Normal  ---
autocfg                     1.1.0                          Removed  Removed  Build   ---
bumpalo                     3.15.3                         Removed  Removed  Normal  ---
cfg-if                      1.0.0                          Removed  Removed  Normal  ---
getrandom                   0.2.12                         Removed  Removed  Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.14.3   0.14.3   Normal  ---
indexmap                    1.9.3                          2.2.3    2.2.3    Normal  ---
js-sys                      0.3.68                         Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc                        0.2.153                        Removed  Removed  Normal  cfg(unix)
log                         0.4.20                         Removed  Removed  Normal  ---
once_cell                   1.19.0                         Removed  Removed  Normal  ---
proc-macro2                 1.0.78                         Removed  Removed  Normal  ---
quote                       1.0.35                         Removed  Removed  Normal  ---
syn                         2.0.50                         Removed  Removed  Normal  ---
unicode-ident               1.0.12                         Removed  Removed  Normal  ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  Removed  Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.91                         Removed  Removed  Normal  ---
wasm-bindgen                0.2.91                         Removed  Removed  Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend        0.2.91                         Removed  Removed  Normal  ---
wasm-bindgen-macro          0.2.91                         Removed  Removed  Normal  ---
wasm-bindgen-macro-support  0.2.91                         Removed  Removed  Normal  ---
wasm-bindgen-shared         0.2.91                         Removed  Removed  Normal  ---

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml
Name                  Project  Compat  Latest  Kind    Platform
----                  -------  ------  ------  ----    --------
borsh-derive->syn     2.0.50   2.0.51  2.0.51  Normal  ---
darling_core->syn     2.0.50   2.0.51  2.0.51  Normal  ---
darling_macro->syn    2.0.50   2.0.51  2.0.51  Normal  ---
near-sdk-macros->syn  2.0.50   2.0.51  2.0.51  Normal  ---
schemars->dyn-clone   1.0.16   1.0.17  1.0.17  Normal  ---
serde_derive->syn     2.0.50   2.0.51  2.0.51  Normal  ---
strum_macros->syn     2.0.50   2.0.51  2.0.51  Normal  ---
syn_derive->syn       2.0.50   2.0.51  2.0.51  Normal  ---
zerocopy-derive->syn  2.0.50   2.0.51  2.0.51  Normal  ---

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml
Name                             Project  Compat   Latest   Kind    Platform
----                             -------  ------   ------   ----    --------
actix-macros->syn                2.0.50   2.0.51   2.0.51   Normal  ---
actix_derive->syn                2.0.50   2.0.51   2.0.51   Normal  ---
ahash->cfg-if                    1.0.0    Removed  Removed  Normal  ---
ahash->zerocopy                  0.7.32   Removed  Removed  Normal  ---
async-stream-impl->syn           2.0.50   2.0.51   2.0.51   Normal  ---
async-trait->syn                 2.0.50   2.0.51   2.0.51   Normal  ---
backtrace->cc                    1.0.86   1.0.88   1.0.88   Build   ---
borsh-derive->syn                2.0.50   2.0.51   2.0.51   Normal  ---
bzip2-sys->cc                    1.0.86   1.0.88   1.0.88   Build   ---
clap_derive->syn                 2.0.50   2.0.51   2.0.51   Normal  ---
curve25519-dalek-derive->syn     2.0.50   2.0.51   2.0.51   Normal  ---
darling_core->syn                2.0.50   2.0.51   2.0.51   Normal  ---
darling_macro->syn               2.0.50   2.0.51   2.0.51   Normal  ---
derive_arbitrary->syn            2.0.50   2.0.51   2.0.51   Normal  ---
enum-map-derive->syn             2.0.50   2.0.51   2.0.51   Normal  ---
futures-macro->syn               2.0.50   2.0.51   2.0.51   Normal  ---
hashbrown->ahash                 0.8.9    0.7.8    0.7.8    Normal  ---
hashbrown->allocator-api2        0.2.16   Removed  Removed  Normal  ---
iana-time-zone-haiku->cc         1.0.86   1.0.88   1.0.88   Build   ---
indexmap->equivalent             1.0.1    Removed  Removed  Normal  ---
indexmap->hashbrown              0.14.3   0.12.3   0.12.3   Normal  ---
near-rpc-error-core->syn         2.0.50   2.0.51   2.0.51   Normal  ---
near-rpc-error-macro->syn        2.0.50   2.0.51   2.0.51   Normal  ---
num_cpus->hermit-abi             0.3.6    0.3.8    0.3.8    Normal  cfg(target_os = "hermit")
openssl-macros->syn              2.0.50   2.0.51   2.0.51   Normal  ---
openssl-sys->cc                  1.0.86   1.0.88   1.0.88   Build   ---
pin-project-internal->syn        2.0.50   2.0.51   2.0.51   Normal  ---
proc-macro2->unicode-ident       1.0.12   Removed  Removed  Normal  ---
quote->proc-macro2               1.0.78   Removed  Removed  Normal  ---
ring->cc                         1.0.86   1.0.88   1.0.88   Build   ---
rustls->rustls-pki-types         1.3.0    1.3.1    1.3.1    Normal  ---
rustls-webpki->rustls-pki-types  1.3.0    1.3.1    1.3.1    Normal  ---
schemars->dyn-clone              1.0.16   1.0.17   1.0.17   Normal  ---
scroll_derive->syn               2.0.50   2.0.51   2.0.51   Normal  ---
secp256k1-sys->cc                1.0.86   1.0.88   1.0.88   Build   ---
serde_derive->syn                2.0.50   2.0.51   2.0.51   Normal  ---
serde_repr->syn                  2.0.50   2.0.51   2.0.51   Normal  ---
serde_with->indexmap             2.2.3    1.9.3    1.9.3    Normal  ---
serde_with_macros->syn           2.0.50   2.0.51   2.0.51   Normal  ---
syn->proc-macro2                 1.0.78   Removed  Removed  Normal  ---
syn->quote                       1.0.35   Removed  Removed  Normal  ---
syn->unicode-ident               1.0.12   Removed  Removed  Normal  ---
syn_derive->syn                  2.0.50   2.0.51   2.0.51   Normal  ---
thiserror-impl->syn              2.0.50   2.0.51   2.0.51   Normal  ---
tokio-macros->syn                2.0.50   2.0.51   2.0.51   Normal  ---
tracing-attributes->syn          2.0.50   2.0.51   2.0.51   Normal  ---
ureq->rustls-pki-types           1.3.0    1.3.1    1.3.1    Normal  ---
wasm-bindgen-backend->syn        2.0.50   2.0.51   2.0.51   Normal  ---
wasm-bindgen-macro-support->syn  2.0.50   2.0.51   2.0.51   Normal  ---
webpki-roots->rustls-pki-types   1.3.0    1.3.1    1.3.1    Normal  ---
zerocopy->zerocopy-derive        0.7.32   Removed  Removed  Normal  ---
zerocopy-derive->proc-macro2     1.0.78   Removed  Removed  Normal  ---
zerocopy-derive->quote           1.0.35   Removed  Removed  Normal  ---
zerocopy-derive->syn             2.0.50   2.0.51   2.0.51   Normal  ---
zerocopy-derive->syn             2.0.50   Removed  Removed  Normal  ---
zstd-sys->cc                     1.0.86   1.0.88   1.0.88   Build   ---

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml
Name                             Project  Compat  Latest  Kind    Platform
----                             -------  ------  ------  ----    --------
serde_derive->syn                2.0.50   2.0.51  2.0.51  Normal  ---
wasm-bindgen-backend->syn        2.0.50   2.0.51  2.0.51  Normal  ---
wasm-bindgen-macro-support->syn  2.0.50   2.0.51  2.0.51  Normal  ---

/home/runner/work/polyglot/polyglot

> polyglot@ outdated-pre /home/runner/work/polyglot/polyglot
> npm-check-updates --target greatest

Using pnpm
Checking /home/runner/work/polyglot/polyglot/package.json


All dependencies match the greatest package versions :)

/home/runner/work/polyglot/polyglot/apps/ipfs

> ipfs@ outdated-pre /home/runner/work/polyglot/polyglot/apps/ipfs
> npm-check-updates --target greatest

Using pnpm
Checking /home/runner/work/polyglot/polyglot/apps/ipfs/package.json


All dependencies match the greatest package versions :)

/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension

> polyglot@ outdated-pre /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
> npm-check-updates --target greatest

Using pnpm
Checking /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/package.json


 @playwright/test    1.41.2  →  1.42.0-beta-1708467899000
 @types/chrome     ~0.0.261  →                   ~0.0.262

Run ncu --target greatest -u to upgrade package.json